一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux系統下OpenSSH的安裝及基本配置文件詳解

Linux系統下OpenSSH的安裝及基本配置文件詳解

2019-07-06 20:24天緣博客天緣 Linux

這篇文章主要介紹了Linux系統下OpenSSH的安裝及基本配置文件詳解,這也是使用SSH協議連接服務器的最常用基礎配置,需要的朋友可以參考下

遠程安裝調試SSH特別注意,OpenSSH卸載后,可能導致凡使用SSH協議連接服務器的工具都無法登陸,比如WINSCP、PUTTY等,如果你正使用遠程桌面,最好先開啟TELNET并確保開機啟動(或其它可替代的遠程管理工具也可以),客戶端可以正常連接后才可動手更新SSH,否則一旦SSH啟動失敗,就只能找機房了。


一、卸載原來SSH

默認SSH會安裝為服務,且開機啟動,所以要先把服務停止(本文環境RedHat5.4):
 

復制代碼

代碼如下:


service sshd stop


這時,建議備份一下/etc/init.d/sshd這個啟動文件,因為下文編譯安裝OpenSSH后,沒這個啟動文件,盡管實際修改使用也不是太方便,除非你下文的安裝目錄跟原來的一樣的。

復制代碼

代碼如下:


mv /etc/init.d/sshd /etc/init.d/sshd.old


卸載軟件包:

復制代碼

代碼如下:


rmp -qa|grep openssh*


把輸出列表中的SSH軟件包都卸載掉。卸載方法請參考:

 

二、下載并安裝新的OPENSSH
 

復制代碼

代碼如下:


cd /tmp
wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
tar xzvf openssh-5.9p1.tar.gz
cd openssh-5.9p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib2
make && make install


這里需要注意,上面的./configure配置,天緣的默認路徑如下:

復制代碼

代碼如下:


openssl -> /usr/local/openssl
zlib -> /usr/local/zlib2


確認這些路徑跟你的系統對應。不同則需手動修改掉。此外還有些參數,比如:

復制代碼

代碼如下:


--bindir=/usr/bin --sbindir=/usr/sbin


可根據需要設定。

 

三、查詢SSH版本
 

復制代碼

代碼如下:


[root@localhost]# ssh -V
OpenSSH_5.9p1, OpenSSL 1.0.1 14 Mar 2012

 


四、設為服務開機運行

1、簡單的開機啟動設置方法
由于是自編譯安裝的OpenSSH,沒有sshd這個啟動文件,所以直接使用傳統的啟動方式,直接修改rc.local。打開/etc/rc.local,添加:
 

復制代碼

代碼如下:

/usr/sbin/sshd


即可設置為開機啟動。
2、愛折騰設置開機方法
使用chkconfig設置結合上文備份的sshd文件設為開機啟動有點麻煩,首先還原/etc/init.d/sshd:

復制代碼

代碼如下:


mv /etc/init.d/sshd.old /etc/init.d/sshd


再打開/etc/init.d/sshd文件(原裝的sshd啟動配置文件大概有4K多,主要確認頂部幾個路徑是否正確即可),天緣大概整理一下,主要如下幾個(可能不一定完整,下次實際確認一下再補充完善):

復制代碼

代碼如下:


...
# source function library
. /etc/rc.d/init.d/functions</p> <p># pull in sysconfig settings
[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd</p> <p>RETVAL=0
prog="sshd"
lockfile=/var/lock/subsys/$prog</p> <p># Some functions to make the below more readable
KEYGEN=/usr/bin/ssh-keygen
SSHD=/usr/sbin/sshd
RSA1_KEY=/etc/ssh/ssh_host_key
RSA_KEY=/etc/ssh/ssh_host_rsa_key
DSA_KEY=/etc/ssh/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid
...


確認這些并修改這些路徑后保存。
使用chkconfig添加為服務:

復制代碼

代碼如下:


chkconfig –add sshd
chkconfig –level 2345 sshd on


這樣就設置完成了。

 

五、重啟電腦或服務

啟動SSH:
 

復制代碼

代碼如下:


service sshd start


停止SSH:

復制代碼

代碼如下:


service sshd stop

 

六、OpenSSH配置文件詳解
AcceptEnv 
指定客戶端發送的哪些環境變量將會被傳遞到會話環境中。[注意]只有SSH-2協議支持環境變量的傳遞。 
細節可以參考 ssh_config 中的 SendEnv 配置指令。 
指令的值是空格分隔的變量名列表(其中可以使用’*’和’?’作為通配符)。也可以使用多個 AcceptEnv 達到同樣的目的。 
需要注意的是,有些環境變量可能會被用于繞過禁止用戶使用的環境變量。由于這個原因,該指令應當小心使用。 
默認是不傳遞任何環境變量。


AddressFamily 
指定 sshd應當使用哪種地址族。取值范圍是:”any”(默認)、”inet”(僅IPv4)、”inet6″(僅IPv6)。


AllowGroups 
這個指令后面跟著一串用空格分隔的組名列表(其中可以使用”*”和”?”通配符)。默認允許所有組登錄。 
如果使用了這個指令,那么將僅允許這些組中的成員登錄,而拒絕其它所有組。 
這里的”組”是指”主組”(primary group),也就是/etc/passwd文件中指定的組。 
這里只允許使用組的名字而不允許使用GID。相關的 allow/deny 指令按照下列順序處理: 
DenyUsers, AllowUsers, DenyGroups, AllowGroups


AllowTcpForwarding 
是否允許TCP轉發,默認值為”yes”。 
禁止TCP轉發并不能增強安全性,除非禁止了用戶對shell的訪問,因為用戶可以安裝他們自己的轉發器。


AllowUsers 
這個指令后面跟著一串用空格分隔的用戶名列表(其中可以使用”*”和”?”通配符)。默認允許所有用戶登錄。 
如果使用了這個指令,那么將僅允許這些用戶登錄,而拒絕其它所有用戶。 
如果指定了 USER@HOST 模式的用戶,那么 USER 和 HOST 將同時被檢查。 
這里只允許使用用戶的名字而不允許使用UID。相關的 allow/deny 指令按照下列順序處理: 
DenyUsers, AllowUsers, DenyGroups, AllowGroups


AuthorizedKeysFile 
存放該用戶可以用來登錄的 RSA/DSA 公鑰。 
該指令中可以使用下列根據連接時的實際情況進行展開的符號: 
%% 表示’%’、%h 表示用戶的主目錄、%u 表示該用戶的用戶名。 
經過擴展之后的值必須要么是絕對路徑,要么是相對于用戶主目錄的相對路徑。 
默認值是”.ssh/authorized_keys”。


Banner 
將這個指令指定的文件中的內容在用戶進行認證前顯示給遠程用戶。 
這個特性僅能用于SSH-2,默認什么內容也不顯示。”none”表示禁用這個特性。


ChallengeResponseAuthentication 
是否允許質疑-應答(challenge-response)認證。默認值是”yes”。 
所有 login.conf 中允許的認證方式都被支持。


Ciphers 
指定SSH-2允許使用的加密算法。多個算法之間使用逗號分隔。可以使用的算法如下: 
“aes128-cbc”, “aes192-cbc”, “aes256-cbc”, “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, 
“3des-cbc”, “arcfour128″, “arcfour256″, “arcfour”, “blowfish-cbc”, “cast128-cbc” 
默認值是可以使用上述所有算法。


ClientAliveCountMax 
sshd 在未收到任何客戶端回應前最多允許發送多少個”alive”消息。默認值是 3 。 
到達這個上限后,sshd 將強制斷開連接、關閉會話。 
需要注意的是,”alive”消息與 TCPKeepAlive 有很大差異。 
“alive”消息是通過加密連接發送的,因此不會被欺騙;而 TCPKeepAlive 卻是可以被欺騙的。 
如果 ClientAliveInterval 被設為 15 并且將 ClientAliveCountMax 保持為默認值, 
那么無應答的客戶端大約會在45秒后被強制斷開。這個指令僅可以用于SSH-2協議。


ClientAliveInterval 
設置一個以秒記的時長,如果超過這么長時間沒有收到客戶端的任何數據, 
sshd 將通過安全通道向客戶端發送一個”alive”消息,并等候應答。 
默認值 0 表示不發送”alive”消息。這個選項僅對SSH-2有效。


Compression 
是否對通信數據進行加密,還是延遲到認證成功之后再對通信數據加密。 
可用值:”yes”, “delayed”(默認), “no”。


DenyGroups 
這個指令后面跟著一串用空格分隔的組名列表(其中可以使用”*”和”?”通配符)。默認允許所有組登錄。 
如果使用了這個指令,那么這些組中的成員將被拒絕登錄。 
這里的”組”是指”主組”(primary group),也就是/etc/passwd文件中指定的組。 
這里只允許使用組的名字而不允許使用GID。相關的 allow/deny 指令按照下列順序處理: 
DenyUsers, AllowUsers, DenyGroups, AllowGroups


DenyUsers 
這個指令后面跟著一串用空格分隔的用戶名列表(其中可以使用”*”和”?”通配符)。默認允許所有用戶登錄。 
如果使用了這個指令,那么這些用戶將被拒絕登錄。 
如果指定了 USER@HOST 模式的用戶,那么 USER 和 HOST 將同時被檢查。 
這里只允許使用用戶的名字而不允許使用UID。相關的 allow/deny 指令按照下列順序處理: 
DenyUsers, AllowUsers, DenyGroups, AllowGroups


ForceCommand 
強制執行這里指定的命令而忽略客戶端提供的任何命令。這個命令將使用用戶的登錄shell執行(shell -c)。 
這可以應用于 shell 、命令、子系統的完成,通常用于 Match 塊中。 
這個命令最初是在客戶端通過 SSH_ORIGINAL_COMMAND 環境變量來支持的。


GatewayPorts 
是否允許遠程主機連接本地的轉發端口。默認值是”no”。 
sshd默認將遠程端口轉發綁定到loopback地址。這樣將阻止其它遠程主機連接到轉發端口。 
GatewayPorts 指令可以讓 sshd 將遠程端口轉發綁定到非loopback地址,這樣就可以允許遠程主機連接了。 
“no”表示僅允許本地連接,”yes”表示強制將遠程端口轉發綁定到統配地址(wildcard address), 
“clientspecified”表示允許客戶端選擇將遠程端口轉發綁定到哪個地址。


GSSAPIAuthentication 
是否允許使用基于 GSSAPI 的用戶認證。默認值為”no”。僅用于SSH-2。


GSSAPICleanupCredentials 
是否在用戶退出登錄后自動銷毀用戶憑證緩存。默認值是”yes”。僅用于SSH-2。


HostbasedAuthentication 
這個指令與 RhostsRSAAuthentication 類似,但是僅可以用于SSH-2。推薦使用默認值”no”。 
推薦使用默認值”no”禁止這種不安全的認證方式。


HostbasedUsesNameFromPacketOnly 
在開啟 HostbasedAuthentication 的情況下, 
指定服務器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 進行遠程主機名匹配時,是否進行反向域名查詢。 
“yes”表示 sshd 信任客戶端提供的主機名而不進行反向查詢。默認值是”no”。


HostKey 
主機私鑰文件的位置。如果權限不對,sshd可能會拒絕啟動。 
SSH-1默認是 /etc/ssh/ssh_host_key 。 
SSH-2默認是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。 
一臺主機可以擁有多個不同的私鑰。”rsa1″僅用于SSH-1,”dsa”和”rsa”僅用于SSH-2。


IgnoreRhosts 
是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 過程中忽略 .rhosts 和 .shosts 文件。 
不過 /etc/hosts.equiv 和 /etc/shosts.equiv 仍將被使用。推薦設為默認值”yes”。


IgnoreUserKnownHosts 
是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 過程中忽略用戶的 ~/.ssh/known_hosts 文件。 
默認值是”no”。為了提高安全性,可以設為”yes”。


KerberosAuthentication 
是否要求用戶為 PasswordAuthentication 提供的密碼必須通過 Kerberos KDC 認證,也就是是否使用Kerberos認證。 
要使用Kerberos認證,服務器需要一個可以校驗 KDC identity 的 Kerberos servtab 。默認值是”no”。


KerberosGetAFSToken 
如果使用了 AFS 并且該用戶有一個 Kerberos 5 TGT,那么開啟該指令后, 
將會在訪問用戶的家目錄前嘗試獲取一個 AFS token 。默認為”no”。


KerberosOrLocalPasswd 
如果 Kerberos 密碼認證失敗,那么該密碼還將要通過其它的認證機制(比如 /etc/passwd)。 
默認值為”yes”。


KerberosTicketCleanup 
是否在用戶退出登錄后自動銷毀用戶的 ticket 。默認值是”yes”。


KeyRegenerationInterval 
在SSH-1協議下,短命的服務器密鑰將以此指令設置的時間為周期(秒),不斷重新生成。 
這個機制可以盡量減小密鑰丟失或者黑客攻擊造成的損失。 
設為 0 表示永不重新生成,默認為 3600(秒)。


ListenAddress 
指定 sshd 監聽的網絡地址,默認監聽所有地址。可以使用下面的格式:


ListenAddress host|IPv4_addr|IPv6_addr 
ListenAddress host|IPv4_addr:port 
ListenAddress [host|IPv6_addr]:port


如果未指定 port ,那么將使用 Port 指令的值。 
可以使用多個 ListenAddress 指令監聽多個地址。


LoginGraceTime 
限制用戶必須在指定的時限內認證成功,0 表示無限制。默認值是 120 秒。


LogLevel 
指定 sshd 的日志等級(詳細程度)。可用值如下: 
QUIET, FATAL, ERROR, INFO(默認), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3 
DEBUG 與 DEBUG1 等價;DEBUG2 和 DEBUG3 則分別指定了更詳細、更羅嗦的日志輸出。 
比 DEBUG 更詳細的日志可能會泄漏用戶的敏感信息,因此反對使用。


MACs 
指定允許在SSH-2中使用哪些消息摘要算法來進行數據校驗。 
可以使用逗號分隔的列表來指定允許使用多個算法。默認值(包含所有可以使用的算法)是: 
hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,hmac-sha1-96,hmac-md5-96


Match 
引入一個條件塊。塊的結尾標志是另一個 Match 指令或者文件結尾。 
如果 Match 行上指定的條件都滿足,那么隨后的指令將覆蓋全局配置中的指令。 
Match 的值是一個或多個”條件-模式”對。可用的”條件”是:User, Group, Host, Address 。 
只有下列指令可以在 Match 塊中使用:AllowTcpForwarding, Banner, 
ForceCommand, GatewayPorts, GSSApiAuthentication, 
KbdInteractiveAuthentication, KerberosAuthentication, 
PasswordAuthentication, PermitOpen, PermitRootLogin, 
RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset, 
X11Forwarding, X11UseLocalHost


MaxAuthTries 
指定每個連接最大允許的認證次數。默認值是 6 。 
如果失敗認證的次數超過這個數值的一半,連接將被強制斷開,且會生成額外的失敗日志消息。


MaxStartups 
最大允許保持多少個未認證的連接。默認值是 10 。 
到達限制后,將不再接受新連接,除非先前的連接認證成功或超出 LoginGraceTime 的限制。


PasswordAuthentication 
是否允許使用基于密碼的認證。默認為”yes”。


PermitEmptyPasswords 
是否允許密碼為空的用戶遠程登錄。默認為”no”。


PermitOpen 
指定TCP端口轉發允許的目的地,可以使用空格分隔多個轉發目標。默認允許所有轉發請求。 
合法的指令格式如下: 
PermitOpen host:port 
PermitOpen IPv4_addr:port 
PermitOpen [IPv6_addr]:port 
“any”可以用于移除所有限制并允許一切轉發請求。


PermitRootLogin 
是否允許 root 登錄。可用值如下: 
“yes”(默認) 表示允許。”no”表示禁止。 
“without-password”表示禁止使用密碼認證登錄。 
“forced-commands-only”表示只有在指定了 command 選項的情況下才允許使用公鑰認證登錄。 
同時其它認證方法全部被禁止。這個值常用于做遠程備份之類的事情。


PermitTunnel 
是否允許 tun 設備轉發。可用值如下: 
“yes”, “point-to-point”(layer 3), “ethernet”(layer 2), “no”(默認)。 
“yes”同時蘊含著”point-to-point”和”ethernet”。


PermitUserEnvironment 
指定是否允許 sshd處理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 選項。 
默認值是”no”。如果設為”yes”可能會導致用戶有機會使用某些機制(比如 LD_PRELOAD)繞過訪問控制,造成安全漏洞。


PidFile 
指定在哪個文件中存放SSH守護進程的進程號,默認為 /var/run/sshd.pid 文件。


Port 
指定 sshd守護進程監聽的端口號,默認為 22 。可以使用多條指令監聽多個端口。 
默認將在本機的所有網絡接口上監聽,但是可以通過 ListenAddress 指定只在某個特定的接口上監聽。


PrintLastLog 
指定 sshd 是否在每一次交互式登錄時打印最后一位用戶的登錄時間。默認值是”yes”。


PrintMotd 
指定 sshd 是否在每一次交互式登錄時打印 /etc/motd 文件的內容。默認值是”yes”。


Protocol 
指定 sshd 支持的SSH協議的版本號。 
’1′和’2′表示僅僅支持SSH-1和SSH-2協議。”2,1″表示同時支持SSH-1和SSH-2協議。


PubkeyAuthentication 
是否允許公鑰認證。僅可以用于SSH-2。默認值為”yes”。


RhostsRSAAuthentication 
是否使用強可信主機認證(通過檢查遠程主機名和關聯的用戶名進行認證)。僅用于SSH-1。 
這是通過在RSA認證成功后再檢查 ~/.rhosts 或 /etc/hosts.equiv 進行認證的。 
出于安全考慮,建議使用默認值”no”。


RSAAuthentication 
是否允許使用純 RSA 公鑰認證。僅用于SSH-1。默認值是”yes”。


ServerKeyBits 
指定臨時服務器密鑰的長度。僅用于SSH-1。默認值是 768(位)。最小值是 512 。


StrictModes 
指定是否要求 sshd 在接受連接請求前對用戶主目錄和相關的配置文件進行宿主和權限檢查。 
強烈建議使用默認值”yes”來預防可能出現的低級錯誤。


Subsystem 
配置一個外部子系統(例如,一個文件傳輸守護進程)。僅用于SSH-2協議。 
值是一個子系統的名字和對應的命令行(含選項和參數)。比如”sft /bin/sftp-server”。


SyslogFacility 
指定 sshd 將日志消息通過哪個日志子系統(facility)發送。有效值是: 
DAEMON, USER, AUTH(默認), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7


TCPKeepAlive 
指定系統是否向客戶端發送 TCP keepalive 消息。默認值是”yes”。 
這種消息可以檢測到死連接、連接不當關閉、客戶端崩潰等異常。 
可以設為”no”關閉這個特性。


UseDNS 
指定 sshd是否應該對遠程主機名進行反向解析,以檢查此主機名是否與其IP地址真實對應。默認值為”yes”。


UseLogin 
是否在交互式會話的登錄過程中使用 login 。默認值是”no”。 
如果開啟此指令,那么 X11Forwarding 將會被禁止,因為 login不知道如何處理 xauthcookies 。 
需要注意的是,login 是禁止用于遠程執行命令的。 
如果指定了 UsePrivilegeSeparation ,那么它將在認證完成后被禁用。


UsePrivilegeSeparation 
是否讓 sshd 通過創建非特權子進程處理接入請求的方法來進行權限分離。默認值是”yes”。 
認證成功后,將以該認證用戶的身份創建另一個子進程。 
這樣做的目的是為了防止通過有缺陷的子進程提升權限,從而使系統更加安全。


UsePAM 
是否使用PAM登陸。 

X11DisplayOffset 
指定 sshdX11 轉發的第一個可用的顯示區(display)數字。默認值是 10 。 
這個可以用于防止 sshd 占用了真實的 X11 服務器顯示區,從而發生混淆。


X11Forwarding 
是否允許進行 X11 轉發。默認值是”no”,設為”yes”表示允許。 
如果允許X11轉發并且sshd代理的顯示區被配置為在含有通配符的地址(X11UseLocalhost)上監聽。 
那么將可能有額外的信息被泄漏。由于使用X11轉發的可能帶來的風險,此指令默認值為”no”。 
需要注意的是,禁止X11轉發并不能禁止用戶轉發X11通信,因為用戶可以安裝他們自己的轉發器。 
如果啟用了 UseLogin ,那么X11轉發將被自動禁止。


X11UseLocalhost 
sshd 是否應當將X11轉發服務器綁定到本地loopback地址。默認值是”yes”。 
sshd 默認將轉發服務器綁定到本地loopback地址并將 DISPLAY 環境變量的主機名部分設為”localhost”。 
這可以防止遠程主機連接到 proxy display 。不過某些老舊的X11客戶端不能在此配置下正常工作。 
為了兼容這些老舊的X11客戶端,你可以設為”no”。


XAuthLocation 
指定 xauth 程序的絕對路徑。默認值是 /usr/X11R6/bin/xauth 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 桥本有菜在线四虎福利网 | 天美传媒果冻传媒星空传媒 | 91噜噜噜在线观看 | 亚久久伊人精品青青草原2020 | 亚洲欧美久久久久久久久久爽网站 | 嫩草影院国产 | 欧美午夜精品 | 桃色导航| 亚洲第一区se | 四虎影视在线观看永久地址 | 夫妻性生活一级黄色片 | 国产1广场舞丰满老女偷 | 久久青草免费91线频观看站街 | 色综合久久中文字幕 | 色偷偷91久久综合噜噜噜 | 欧美色图日韩色图 | 日韩精品视频在线观看免费 | 校花被吃奶还摸下面 | 国产偷窥 | 美女污视频在线观看 | 亚洲美色综合天天久久综合精品 | 国产精品青青青高清在线密亚 | 亚洲春色综合另类网蜜桃 | 97爱干| 国产在线观看精品香蕉v区 国产在线观看a | 欧美日韩中文国产一区二区三区 | 外国xxx | 亚洲国产成人精品无码区99 | 好舒服好爽再快点视频 | 日本ccc三级 | 男人的天堂视频 | 亚洲精品一区二区三区在线观看 | 桃色视频软件 | 欧美日韩中文国产一区二区三区 | 免费a视频在线观看 | 被教官揉了一晚上的奶小说 | 日韩国产欧美视频 | 国产欧美精品一区二区三区–老狼 | 亚洲国产99| 污书屋 | 成人伊在线影院 |