2015-11-21 142 views
2

我已經將服務器A的ssh密鑰設置爲服務器B,我可以在沒有密碼的情況下登錄服務器B.我試圖在bash腳本中設置一個反向ssh隧道。從如果我做它按預期工作即不需要密碼在bash腳本中使用ssh密鑰

ssh -N -R 1234:localhost:22 [email protected] -p 22 

表格服務器A,但是如果我用它在腳本

#!/bin/bash 
/usr/bin/ssh -N -R 1234:localhost:22 [email protected] -p 22 

有人問我輸入密碼

命令行
[email protected]'s password: 

我該怎麼做才能使用鑰匙?

+0

我相信你需要啓動你的'ssh-agent'並添加你的密鑰。 – 4ae1e1

回答

3

您需要讓ssh知道應該在哪裏搜索密鑰,如果它們不在標準位置並且沒有密碼保護。最簡單的事情是通過指定直接-i開關ssh

/usr/bin/ssh -i /path/to/key -N -R 1234:localhost:22 [email protected] -p 22 

或清潔劑的方式在你的~/.ssh/config這樣的:

Host mydomain.co.uk 
    IdentityFile /path/to/key 

但要確保腳本運行與您的用戶環境,所以腳本會看到配置文件。

如果你在標準位置有鑰匙(~/.ssh/id_rsa),你的代碼應該工作得很好。儘管如果您的密鑰存儲在ssh-agent中,您應該在啓動腳本之前使用ssh-add -L進行驗證。 ssh-agent也解決了這個問題,如果他的密鑰是密碼保護。

+0

非常感謝,使用了-i開關,它現在按預期工作#!/ bin/bash /usr/bin/ssh -i /home/user/.ssh/id_rsa -N -R ssh -N -R 1234: localhost:22 [email protected] -p 22 – Lurch

+0

請花點時間接受答案,如果它爲你工作並解決你的問題。 – Jakuje