在bash脚本中使用ssh键

时间:2015-11-21 20:30:15

标签: bash ssh key tunnel

我已经从服务器A到服务器B设置了ssh密钥,我可以在没有密码的情况下登录到服务器B.我试图在bash脚本中设置反向ssh隧道。如果我这样做,从命令行

ssh -N -R 1234:localhost:22 user@mydomain.co.uk -p 22

表单服务器A它按预期工作,即不需要密码,但是如果我在脚本中使用它

#!/bin/bash
/usr/bin/ssh -N -R 1234:localhost:22 user@mydomain.co.uk -p 22

我被要求输入密码

user@mydomain.co.uk's password:

如何使用密钥?

1 个答案:

答案 0 :(得分:3)

您需要让ssh知道它应该搜索密钥的位置,如果它们不在标准位置而不是密码保护。最简单的方法是将-i直接指定为ssh

/usr/bin/ssh -i /path/to/key -N -R 1234:localhost:22 user@mydomain.co.uk -p 22

或者像~/.ssh/config这样更干净的方式:

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

但请确保脚本是使用您的用户上下文运行的,因此脚本将看到配置文件。

如果您在标准位置(~/.ssh/id_rsa)拥有密钥,那么您的代码应该可以正常运行。虽然如果您将密钥存储在ssh-agent中,它应该可以使用,您可以在启动脚本之前使用ssh-add -L进行验证。如果密钥受密码保护,ssh-agent也可以解决问题。