1. 程式人生 > >linux ssh 不用密碼自動登入的幾種方法

linux ssh 不用密碼自動登入的幾種方法



2. 控制n個機器如上所述自動登入
那就需要n對鑰匙(金鑰和公鑰), ssh-keygen 命令可以隨意更改鑰匙對的名字, 比如:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.60.110

這樣私鑰和公鑰的名字分別就是: id_rsa_192.168.60.110和 id_rsa_192.168.60.110.pub;然後將 id_rsa_192.168.60.110.pub 檔案的內容, 追加到sever的 ~/.ssh/authorized_keys檔案中,最後, 在本地用ssh命令的 -i 引數指定本地金鑰, 並登入:
# ssh -i /root/.ssh/id_rsa_192.168.60.110
[email protected]


scp也是一樣的
# scp -i /root/.ssh/id_rsa_192.168.60.110 filename [email protected]:/home/someone

在檔案.bashrc中加下兩行,每次做同樣的操作就不用敲入這樣長的命令了:
alias sshcell='ssh -i /root/.ssh/id_rsa_192.168.60.110 [email protected]'
alias scpcell='scp -i /root/.ssh/id_rsa_192.168.60.110 filename [email protected]
:/home/someone'

這樣,直接鍵入一下指令實現ssh和scp自動登入:
# sshcell
# scpcell


3. 自動ssh/scp指令碼
如果需要從A,到B,然後才能夠到C,那麼需要ssh和scp兩次,是比較麻煩的。
ssh自動登入:
#!/usr/bin/expect -f
set timeout 30
spawn ssh weiqion[email protected]
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh [email protected]\r"
expect "password:"
send "pppppp\r"
interact


scp從A拷貝檔案到C:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn scp $file
[email protected]
:/home/weiqiong
expect "password:"
send "pppppp\r"
expect "]*"
spawn ssh [email protected]
expect "password:"
send "pppppp\r"
expect "]*"
send "scp $file [email protected]:/home/weiqiong\r"
expect "password:"
send "pppppp\r"
expect "]*"
exit
interact

scp從C拷貝檔案到A:
#!/usr/bin/expect -f
set timeout 300
set file [lindex $argv 0]
spawn ssh [email protected]
expect "password:"
send "pppppp\r"
expect "]*"
send "scp [email protected]:/home/weiqiong/$file .\r"
expect "password:"
send "pppppp\r"
expect "]*"
send "exit\r"
expect "]*"
spawn scp [email protected]:/home/weiqiong/$file .
expect "password:"
send "pppppp\r"
interact

4. 建立ssh/scp通道
比如說我的機器是A,中間伺服器為B,目標伺服器是C
從A可以ssh到B,從B可以ssh到C,但是A不能直接ssh到C
現在展示利用ssh通道技術從A直接傳輸檔案到C
1. ssh -L1234:C:22 [email protected]
input B's password
(1234是本機A的空閒埠,該指令需要A機器上的root使用者許可權,實際上是在本機1234埠建立了一個通道)

2. 開啟一個新的console,鍵入:
scp -P1234 filename [email protected]:
input C's password