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

A B*_*A B 20 ssh gnu-screen configuration

有什么方法可以指定,在.ssh/config,一个命令,如:

ssh -t remote-host "screen -dR screen_name"
Run Code Online (Sandbox Code Playgroud)

所以我可以轻松访问远程screen会话ssh remote-host

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

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

/usr/bin/ssh -t $1 "screen -dR ab"
Run Code Online (Sandbox Code Playgroud)

~/bin停留在第一个$PATH,但它不灵活和丑陋。

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

Bri*_*roe 22

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

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Run Code Online (Sandbox Code Playgroud)


Vea*_*dru 10

使用武力,卢克!

RequestTTY force在您~/.ssh/config想要的主机中。


Arc*_*ege 1

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

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

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