自动化SSH登录并通过编程诱导远程交互式Shell

4
我正在使用Mac OSX工作,尝试创建一个脚本,可以ssh user@host并在虚拟服务器内更改工作目录(cd)。通过搜索得知,ssh -t user@host "command goes here" 可以实现这个目的,但是当我输入cd /my/path时,它显示没有这样的目录,并强制我退出服务器。有什么最好、最简单的方法来完成这个任务吗?

1
“man ssh” 比 Google 更懂:“如果指定了命令,则在远程主机上执行该命令,而不是登录 shell。” - axiac
是的,我想在远程服务器上有一个交互式 shell,并且需要一个新的工作目录。你能给我一些关于自动化身份验证的建议或者指向一些可以帮助我的资源吗?假设我选择手动身份验证(pw),我该如何打开一个交互式 shell 并更改目录? - Himmel
“协助网站开发”并没有加强这个问题与编程有关的论点。交互式 shell 操作是人类操作,而不是程序化操作,就像编辑文本一样,我们也不认为关于如何使用 emacs 或 vi(而不是如何编写脚本)的问题在这里是相关的。考虑将此问题视为相关问题(我确实认为它是相关问题)的原因是它正在以编程方式创建远程交互式 shell;如果您想强调其相关性,则应进行编辑。 - Charles Duffy
感谢您对此的见解。标题已更改以反映。 - Himmel
1个回答

6
我假设你想要的最终结果是在所需目标目录中具有远程交互式 shell,可以通过键盘进行交互。如果不是,请澄清问题。


使用ssh的-t参数强制TTY,并使用明确调用的bash -i生成交互式shell:

ssh -t user@host "cd /my/path && exec bash -i"

脚本化/自动化身份验证已经是一条广为人知的道路(因此,重复性非常高);有关此事的帮助,请参阅现有问题,例如Bash: controlling SSH


这正是我正在寻找的。 - Himmel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接