2015-11-21 118 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