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


13

有什么方法可以在.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$@。然后,您可以添加更多选项,而不仅仅是主机名。要完成任务,请尝试执行. /usr/share/bash-completion/completions/ssh,然后执行complete -F _ssh sssh
亚历克斯·斯特拉吉斯

Answers:


17

要像使用该-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


1

我认为这是最灵活的方式。脚本使您可以根据输入来设置参数,添加条件,根据需要更改命令。

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

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


0

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

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.