伺服器時常需要配置無密碼的登入方式,最一般的設定方式如下:
# ssh-keygen
# cat ~/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"
其實這方法已經很簡單了,不過我總記不清如何正确拼寫authorized_keys這個檔案名。
還好Linux系統裡預設都包含一個名為ssh-copy-id的工具:
# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id
你用cat或者more指令看一下就知道ssh-copy-id本身其實就是一個shell腳本,用法很簡單:
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
再也不用記如何拼寫authorized_keys這個檔案名了,是不是很爽,可惜别高興太早了,ssh-copy-id有一個很要命的問題,那就是預設它僅僅支援SSH運作在22端口的情況,不過實際上出于安全的需要,我們往往都會更改伺服器的SSH端口,比如說改成10022端口,這時候你運作ssh- copy-id就會報錯了,直接修改ssh-copy-id腳本當然可以修正這個問題,但是那樣顯得太生硬了,實際上還有更好的辦法:
# vi ~/.ssh/config
加上内容:
Host server
Hostname ip
Port 10022
你也可以單獨隻加入Port一行配置,那樣就是一個全局配置,儲存後再運作ssh-copy-id指令就不會報錯了。
補充:經網友提示,如果端口不是22,不修改config檔案,按如下方式也可以:
ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 10022 user@server"
本文轉自leonardos51CTO部落格,原文連結:http://blog.51cto.com/leomars/1206736 ,如需轉載請自行聯系原作者