使用SSH的配置文件可以在很大程度上方便各種操作,特別適應於有多個SSH帳號、使用非標准端口或者寫腳本等情況。
man ssh_config
可以查看手冊
如果之前是用密碼方式來登錄SSH,需要先改用證書方式。可以看最后面生成SSH證書
配置文件
用戶配置文件在~/.ssh/config
,沒有的話新建一個。基本的寫法是
Host 名稱(自己決定,方便輸入記憶的) HostName 主機名 User 登錄的用戶名
假設有兩個SSH帳號,一個是github的,一個是其他服務器的,私鑰都是~/.ssh/id_rsa
,可以這樣寫:
Host github.com HostName github.com User git Host server HostName 服務器地址 User 登錄用戶名
注意,github的Host必須寫成“github.com”。你可以會有其他要求,比如指定端口號、綁定本地端口,這些都可以通過man來查詢,比如
Port 端口號 DynamicForward 本地端口號
如果服務器同時有ipv4/ipv6地址,HostName使用域名會比較方便
使用
有了這些配置,很多操作就非常簡化了。比如登錄服務器
ssh server
傳輸文件
scp server:~/test .
如果使用Putty等工具,可能需要一些其他操作(轉換私鑰格式,貌似),自行搜索吧
生成SSH證書
先在本地生成密鑰
ssh-keygen -t rsa
會詢問將密鑰放在何處,默認即可。然后是輸入密碼,留空(否則你登錄不僅需要私鑰還要輸入密碼)。
完成后在~/.ssh
目錄下會生成另個文件id_rsa
和id_rsa.pub
,一個私鑰一個公鑰。之后將id_rsa.pub
上傳到服務器端用於SSH登錄的用戶的家目錄下。執行
cat id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys rm id_rsa.pub
修改服務器端的sshd配置。編輯/etc/ssh/sshd_config
如下
PubkeyAuthentication yes PasswordAuthentication no
之后重啟sshd服務