ssh配置文件中的远程命令


12

我想设置ssh_config,所以只需输入ssh my_hostname我就可以进入特定的文件夹。就像我打字一样cd /folder/another_one/much_much_deeper/

我该如何实现?

编辑。它已被标记为“如何ssh进入目录...”的副本,但这不是我的问题。

我知道我可以通过将任何命令尾随命令来执行任何命令ssh。我的问题是关于/ssh_config文件而不是命令。


我已经澄清了我的问题。
爵士乐

中没有任何内容man ssh_config。最接近的是LocalCommand,但不能用于交互式命令。
lgeorget

1
请您能(在您的问题中)解释为什么您觉得必须进行更改ssh_config?可能有更好的位置来配置起始目录,这将有助于理解为什么对可能的解决方案有此特定限制。
roaima

1
“无法在中完成ssh_config” 这一事实并不会使“在Bash中完成”重复。“你不能那样做”是一个完全正确的答案。
富兰克林·于

1
@terdon但是,“不可能”这一事实可能会随着时间而改变。是的,现在有可能。现在,我(以及将来会看到此问题的任何人)都需要一个新的答案,我们被困在这里。如果没有重新打开,我想期望的路径是创建一个新问题(并回答它)?
富兰克林·于

Answers:


19

OpenSSH 7.6之前,还没有办法做到这一点。从手册

远程命令

指定成功连接到服务器后要在远程计算机上执行的命令。命令字符串延伸到该行的末尾,并使用用户的shell执行。参数RemoteCommand接受在所描述的令牌TOKENS部。

所以现在你可以

RemoteCommand cd /tmp && bash

此提交对此进行了介绍。


5
添加RequestTTY force如果远程命令需要一个TTY。例如:tmux new -As my-session
Aaron Blenkush

这是杀手sshoption,谢谢!
nhed

这样就无法运行其他命令,例如,ssh my_hostname ls将失败Cannot execute command-line and remote command.。这使其他使用ssh的工具(如git和rsync)也失败了。
remram

2

我想设置ssh_config,所以只需键入ssh my_hostname

这不可能。无法在中实现这一目标ssh_config。最接近它的是设置bash别名或bash函数,例如

myssh() {
    ssh -t $1 "cd /dir/; bash"
}

1

在somoene指出这是原始照片之前,我用另一张票回应。

如果使用Mac,我的建议是使用iTerm2并创建一个配置文件。放入ssh my_hostname命令行,然后cd /folder/another_one/much_much_deeper/在“开始”文本框中添加命令。当您连接到会话时,它将ssh转换为您的主机名,并cd转换为您的情况下的目录,或者执行命令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.