SSH 免密登陸服務器

本文詳解如何以多種方法實現ssh免密碼登錄遠程服務器shell

閱讀須知:

1.如下方法操做時請不要隨意切換目錄。
2.xxx爲私鑰,xxx.pub是公鑰(默認通常文件名爲id_rsa和id_rsa.pub,能夠在建立的時候自定義文件名)
3.若是是公司給你的公私鑰對,你想免密登陸公司服務器,你能夠直接放到你的~/.ssh文件中,可跳過建立公私鑰的步驟ubuntu

方法一 :客戶端生成RSA公鑰和私鑰

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

方法二 :用ssh-copy-id

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

方法三:用expect腳本

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

相關文章
相關標籤/搜索