.ssh/config 指定伪 tty 分配和命令执行的方式

.ssh/config 指定伪 tty 分配和命令执行的方式

有什么方法可以在 中指定.ssh/config如下命令:

ssh -t remote-host "screen -dR screen_name"

这样我就可以轻松地使用?访问远程screen会话ssh remote-host

现在我使用自定义脚本解决了这个问题:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/bin保持第一$PATH,但它不灵活且丑陋。

我还想找到为我的自定义脚本实现主机自动完成的方法。

答案1

要像使用-t选项一样分配 tty,请将其RequestTTY force作为条目放入 ssh 配置文件(通常在~/.ssh/config)中。要在连接后始终在服务器上执行命令,请输入RemoteCommand COMMANDCOMMAND希望在连接时运行的命令所在的条目。对于其他选项,请检查man ssh_config

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name

答案2

使用武力,卢克!

RequestTTY force在您的~/.ssh/config所需主机中。

答案3

我认为这是最灵活的方式。脚本允许您根据输入设置参数、添加条件、更改命令。

有一些方法可以“强制”命令authorized_keys。但我不知道除了从命令行强制 tty 分配或从本地端配置文件强制在远程服务器上执行命令的方法。

我自己有一个脚本,可以扫描配置文件,检查各个域的 DNS 并设置终端模拟器的标题字符串。我从本地系统的屏幕上调用它 ( Ctrl-a g)。

答案4

注意:RemoteCommand开始使用OpenSSH 7.6。在早期版本(即当前的 debian 9.9)中,ssh 客户端将停止正常工作(至少对于git pull)。

相关内容