我有一个方便的别名如下:
sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123
这将为我提供一种快速登录远程设备的方法,并获得一个包含标签的命令提示符。
但我接下来要做的第一件事就是cd
到另一个目录。因此,我想将其作为命令添加到行尾,如下所示:
sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx'
但如果我这样做,那么我根本就没有得到提示!它只是坐在那里什么都不做。接下来,我试着让它给我一个命令提示符,使用它:
sshpass -p "the_password" ssh -o StrictHostKeyChecking=no root@192.168.0.123 'cd /tmp/Data/fx; /bin/bash -i'
这几乎有效。
我已更改到正确的目录,并且我有一个命令提示符。但是,我没有任何制表符完成,向上箭头没有显示最新的命令。
我错过了什么?
答案 0 :(得分:0)
ssh -o [...] 'cd /tmp/Data/fx; /bin/bash -i'
当您要求ssh在远程系统上运行命令时,ssh通常不会为远程会话分配PTY(伪TTY)。没有TTY会改变bash
初始化自身的方式,因此不会启用其行编辑功能。您可以使用-t运行ssh来请求会话的tty:
ssh -t -o [...] 'cd /tmp/Data/fx; /bin/bash -i'
如果您不想一直输入,可以将此行添加到" .ssh / config"您当地主持人的文件:
RequestTTY yes