如何配置openSSH
與SSH有關(guān)的配置文件
OpenSSH是SSH(Secure SHell)協(xié)議的免費(fèi)開(kāi)源實(shí)現(xiàn)。它用安全、加密的網(wǎng)絡(luò)連接工具代替了 telnet、ftp、 rlogin、rsh 和 rcp 工具。OpenSSH 支持 SSH 協(xié)議的版本 1.3、1.5、和 2。自從 OpenSSH 的版本 2.9 以來(lái),默認(rèn)的協(xié)議是版本 2,該協(xié)議默認(rèn)使用 RSA 鑰匙。
openSSH的設(shè)置文件和主要文件存放在/etc/ssh/目錄中,主要包括如下文件:
/etc/ssh/sshd_config:sshd服務(wù)器的設(shè)置文件
/etc/ssh/ssh_config:ssh客戶(hù)機(jī)的設(shè)置文件
/etc/ssh/ssh_host_key:SSH1用的RSA私鑰
/etc/ssh/ssh_host_key.pub:SSH1用的RSA公鑰
/etc/ssh/ssh_host_rsa_key:SSH2用的RSA私鑰
/etc/ssh/ssh_host_rsa_key.pub:SSH2用的RSA公鑰
/etc/ssh/ssh_host_dsa_key:SSH2用的DSA私鑰
/etc/ssh/ssh_host_dsa_key.pub:SSH2用的DSA公鑰
配置“/etc/ssh/ssh_config”文件
“/etc/ssh/ssh_config”文件是OpenSSH系統(tǒng)范圍的配置文件,允許用戶(hù)通過(guò)設(shè)置不同的選項(xiàng)來(lái)改變客戶(hù)端程序的運(yùn)行方式。這個(gè)文件的每一行包含“關(guān)鍵詞-值”的匹配,其中“關(guān)鍵詞”是忽略大小寫(xiě)的。下面列出最重要的關(guān)鍵詞,用man命令查看幫助頁(yè)(ssh(1))可以得到詳細(xì)的列表。
配置須要編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數(shù):
# Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
Port 22
Cipher blowfish
EscapeChar ~
下面逐行說(shuō)明上面的選項(xiàng)設(shè)置:
Host *:只對(duì)能夠匹配后面字串的計(jì)算機(jī)有效。“*”表示所有的計(jì)算機(jī)。
ForwardAgent no:“ForwardAgent”設(shè)置連接是否經(jīng)過(guò)驗(yàn)證代理(如果存在)轉(zhuǎn)發(fā)給遠(yuǎn)程計(jì)算機(jī)。
ForwardX11 no:設(shè)置X11連接是否被自動(dòng)重定向到安全的通道和顯示集(DISPLAY set)。
RhostsAuthentication no:是否用基于rhosts的安全驗(yàn)證。
RhostsRSAAuthentication no:是否用RSA算法的基于rhosts的安全驗(yàn)證。
RSAAuthentication yes:是否用RSA算法進(jìn)行安全驗(yàn)證。
PasswordAuthentication yes:是否用口令驗(yàn)證。
FallBackToRsh no:如果用ssh連接出現(xiàn)錯(cuò)誤是否自動(dòng)使用rsh。
UseRsh no:是否在這臺(tái)計(jì)算機(jī)上使用“rlogin/rsh”。
BatchMode no:如果設(shè)為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。當(dāng)不能交互式輸入口令的時(shí)候,這個(gè)選項(xiàng)對(duì)腳本文件和批處理任務(wù)十分有用。
CheckHostIP yes:設(shè)置ssh是否查看連接到服務(wù)器的主機(jī)的IP地址以防止DNS欺騙。建議設(shè)置為“yes”。
StrictHostKeyChecking no:如果設(shè)置成“yes”,ssh就不會(huì)自動(dòng)把計(jì)算機(jī)的密鑰加入“$HOME/.ssh/known_hosts”文件,并且一旦計(jì)算機(jī)的密鑰發(fā)生了變化,就拒絕連接。
IdentityFile ~/.ssh/identity:設(shè)置從哪個(gè)文件讀取用戶(hù)的RSA安全驗(yàn)證標(biāo)識(shí)。
Port 22:設(shè)置連接到遠(yuǎn)程主機(jī)的端口。
Cipher blowfish:設(shè)置加密用的密碼。
EscapeChar ~:設(shè)置escape字符。
假定用戶(hù)在www.super.com上有一個(gè)名為“baby”的賬號(hào)。而且要把“ssh-agent”和“ssh- add”結(jié)合起來(lái)使用并且使用數(shù)據(jù)壓縮來(lái)加快傳輸速度。因?yàn)橹鳈C(jī)名太長(zhǎng)了,想使用“super”作為“www.super.com”的簡(jiǎn)稱(chēng)。那么,配置文件可以如下編寫(xiě):
Host *super
HostName www.super.com
User baby
ForwardAgent yes
Compression yes
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no
當(dāng)用戶(hù)輸入“ssh super”之后,SSH會(huì)自動(dòng)地從配置文件中找到主機(jī)的全名,使用用戶(hù)名登錄并且用“ssh-agent”管理的密鑰進(jìn)行安全驗(yàn)證。
配置“/etc/ssh/sshd_config”文件
“/etc/ssh/sshd_config”是OpenSSH的配置文件,允許設(shè)置選項(xiàng)改變這個(gè)daemon的運(yùn)行。這個(gè)文件的每一行包含“關(guān)鍵詞-值”的匹配,其中“關(guān)鍵詞”是忽略大小寫(xiě)的。下面列出來(lái)的是最重要的關(guān)鍵詞,用man命令查看幫助頁(yè)(sshd(8))可以得到詳細(xì)的列表。
編輯“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改變下面的參數(shù):
# This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin
下面逐行說(shuō)明上面的選項(xiàng)設(shè)置:
Port 22:“Port”設(shè)置sshd監(jiān)聽(tīng)的端口號(hào)。
ListenAddress 192.168.1.1:“ListenAddress”設(shè)置sshd服務(wù)器綁定的IP地址。
HostKey /etc/ssh/ssh_host_key:“HostKey”設(shè)置包含計(jì)算機(jī)私人密鑰的文件。
ServerKeyBits 1024:“ServerKeyBits”定義服務(wù)器密鑰的位數(shù)。
LoginGraceTime 600:“LoginGraceTime”設(shè)置如果用戶(hù)不能成功登錄,在切斷連接之前服務(wù)器需要等待的時(shí)間(以秒為單位)。
KeyRegenerationInterval 3600:“KeyRegenerationInterval”設(shè)置在多少秒之后自動(dòng)重新生成服務(wù)器的密鑰(如果使用密鑰)。重新生成密鑰是為了防止用盜用的密鑰解密被截獲的信息。
PermitRootLogin no:“PermitRootLogin”設(shè)置root能不能用ssh登錄。這個(gè)選項(xiàng)一定不要設(shè)成“yes”。
IgnoreRhosts yes:“IgnoreRhosts”設(shè)置驗(yàn)證的時(shí)候是否使用“rhosts”和“shosts”文件。
IgnoreUserKnownHosts yes:“IgnoreUserKnownHosts”設(shè)置ssh daemon是否在進(jìn)行RhostsRSAAuthentication安全驗(yàn)證的時(shí)候忽略用戶(hù)的“$HOME/.ssh/known_hosts”。
StrictModes yes:“StrictModes”設(shè)置ssh在接收登錄請(qǐng)求之前是否檢查用戶(hù)的目錄和rhosts文件的權(quán)限和所有權(quán)。這通常是必要的,因?yàn)樾率纸?jīng)常會(huì)把自己的目錄和文件設(shè)成任何人都有寫(xiě)權(quán)限。
X11Forwarding no:“X11Forwarding”設(shè)置是否允許X11轉(zhuǎn)發(fā)。
PrintMotd yes:“PrintMotd”設(shè)置sshd是否在用戶(hù)登錄的時(shí)候顯示“/etc/motd”中的信息。
SyslogFacility AUTH:“SyslogFacility”設(shè)置在記錄來(lái)自sshd的消息的時(shí)候,是否給出“facility code”。
LogLevel INFO:“LogLevel”設(shè)置記錄sshd日志消息的層次。INFO是一個(gè)好的選擇。查看sshd的man幫助頁(yè),可以獲取更多的信息。
RhostsAuthentication no:“RhostsAuthentication”設(shè)置只用rhosts或“/etc/hosts.equiv”進(jìn)行安全驗(yàn)證是否已經(jīng)足夠了。
RhostsRSAAuthentication no:“RhostsRSA”設(shè)置是否允許用rhosts或“/etc/hosts.equiv”加上RSA進(jìn)行安全驗(yàn)證。
RSAAuthentication yes:“RSAAuthentication”設(shè)置是否允許只有RSA安全驗(yàn)證。
PasswordAuthentication yes:“PasswordAuthentication”設(shè)置是否允許口令驗(yàn)證。
PermitEmptyPasswords no:“PermitEmptyPasswords”設(shè)置是否允許用口令為空的賬號(hào)登錄。
AllowUsers admin:“AllowUsers”的后面可以跟著任意的數(shù)量的用戶(hù)名的匹配串(patterns)或user@host這樣的匹配串,這些字符串用空格隔開(kāi)。主機(jī)名可以是DNS名或IP地址。