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