本文詳解如何以多種方法實現ssh免密碼登錄遠程服務器shell
1.如下方法操做時請不要隨意切換目錄。
2.xxx爲私鑰,xxx.pub是公鑰(默認通常文件名爲id_rsa和id_rsa.pub,能夠在建立的時候自定義文件名)
3.若是是公司給你的公私鑰對,你想免密登陸公司服務器,你能夠直接放到你的~/.ssh文件中,可跳過建立公私鑰的步驟ubuntu
1. 本地建立公私鑰windows
cd ~/.ssh # 在你的本地打開shell,進入到~/.ssh目錄,而後看一下該目錄下的文件 ls # 看一下文件,看看有沒有已經生成過的公私鑰對(xxx和xxx.pub) 分兩種狀況: A.第一種狀況你沒有生成過公私鑰對(生成過這個目錄下會有相似xxx和xxx.pub 的文件)或者你生成過,可是你想建立一個新的公私鑰對 ssh-keygen # 根據交互,輸入你想要的名字(默認id_rsa),而後是密碼,能夠爲空,生成公私鑰對 ls # 這時候當前目錄下會多了一對公私鑰對 B.已經有一組公私鑰對的能夠不生成。
2.將本身的公鑰xxx.pub上傳到服務器~/.ssh文件中服務器
# 若是服務器沒有.ssh文件,終端登陸到服務器,輸入如下命令: mkdir ~/.ssh # 肯定服務器有.ssh文件後輸入(user是用戶名,host是服務器ip,xxx.pub爲你的公鑰): scp ~/.ssh/xxx.pub user@host:~/.ssh/xxx.pub 例子:scp ~/.ssh/yzy.pub developer@172.18.69.1:~/.ssh/yzy.pub
3.將服務器剛上傳的公鑰xxx.pub追加到 服務器的~/.ssh/authorized_keys 文件中ssh
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
4.賦予文件權限工具
chmod 700 .ssh chmod 600 authorized_keys
1. 本地建立公私鑰spa
cd ~/.ssh # 在你的本地打開shell,進入到~/.ssh目錄,而後看一下該目錄下的文件 ls # 看一下文件,看看有沒有已經生成過的公私鑰對(xxx和xxx.pub) 分兩種狀況: A.第一種狀況你沒有生成過公私鑰對(生成過這個目錄下會有相似xxx和xxx.pub 的文件)或者你生成過,可是你想建立一個新的公私鑰對 ssh-keygen # 根據交互,輸入你想要的名字(默認id_rsa),而後是密碼,能夠爲空,生成公私鑰對 ls # 這時候當前目錄下會多了一對公私鑰對 B.已經有一組公私鑰對的能夠不生成。
2.使 ssh-copy-id 這個腳本工具把共鑰複製到服務器上code
# user是用戶名,host是服務器地址,還要輸入服務器密碼 命令:ssh-copy-id -i xxx.pub user@host 例子:ssh-copy-id -i yzy.pub -p 50715 developer@56.45.12.89
3.windows和ubuntu系統能夠免密登錄,mac系統免密登錄服務器還須要執行第三步調用ssh-addip
# xxx爲你的私鑰文件 命令:ssh-add -K xxx 例如ssh-add -K yzy
1.在某一目錄下建立login.sh腳本(最好是用戶目錄下,即你一打開終端的位置,方便直接使用)登錄
touch login.sh
2.修改下面代碼用戶名和密碼後複製到login.sh文件中
#!/usr/bin/expect -f # 設置命令第一個參數爲host,也能夠在腳本里寫死 set host [lindex $argv 0] # 設置用戶名(zzz爲你的用戶名) set user zzz # 設置密碼(xxx爲你的密碼) set password xxx # 設置超時時間 set timeout 5 spawn ssh $user@$host expect "*assword:*" send "$password\r" interact expect eof
3.啓動腳本登陸服務器:sh login.sh