我希望能够设置一个命令,在 ssh 登录到服务器时运行,而无需键入它。基本上,我正在寻找与以下内容等效的 ssh 配置文件:
ssh host command
因此我需要输入的是:
ssh host
并且命令开始运行。
答案1
你可以在你的中解决这个问题.ssh/config file
,对于你想要执行命令的主机,添加
RequestTTY yes
RemoteCommand <some command>
您的命令在哪里<some command>
。这也适用于 screen 或 tmux。
答案2
您还可以在授权密钥文件中插入命令。(~/.ssh/authorized_keys
)。这允许您为文件中的每个密钥执行自定义命令。我使用它通过防火墙转发 shell 连接。结果是我可以 ssh 到一台主机,它会自动将会话连接到网络内的主机。条目authorized_keys
如下所示:
command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...
更具体地说,重定向适用于我的 gitolite 实例。这允许简单的外部访问,而无需直接将 gitolite 主机暴露给任何外部访问。查看手册页了解更多信息。(http://linux.die.net/man/8/sshd)
答案3
如果你正在运行 OpenSSH,它看起来~/.ssh/rc
像是登录时执行。
答案4
我使用以下内容.ssh/config
:
RemoteCommand cd ~/mydir;bash
RequestTTY force