在 bash 脚本中使用 ssh 密钥
using ssh keys in bash script
我已经设置了从服务器 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:
如何制作它才能使用按键?
您需要让 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
如果他的密钥受密码保护,也可以解决问题。
我已经设置了从服务器 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:
如何制作它才能使用按键?
您需要让 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
如果他的密钥受密码保护,也可以解决问题。