【问题标题】:enabling tty in a ssh session在 ssh 会话中启用 tty
【发布时间】:2010-07-30 14:10:31
【问题描述】:

我会获取一些登录信息,以便编写一个脚本供许多用户使用。在 python 中,我将 input_raw 设置为从 dev/tty 读取,但是当我通过 ssh 连接到在服务器上运行的脚本时,它严重失败。

想法?解决方法?

我希望避免将用户名硬编码到脚本中。

请,谢谢。

【问题讨论】:

    标签: python scripting ssh tty


    【解决方案1】:

    尝试对 ssh 使用-t 选项:

    -t 强制伪 tty 分配。这可以用来执行仲裁 将基于屏幕的程序放在远程机器上,可以是 非常有用,例如实现菜单服务时。多个 -t 即使 ssh 没有本地 tty,选项也会强制分配 tty。

    ~/.ssh/config 中似乎没有等效选项,因此您需要创建一个 shell 脚本。一个简单的方法是:

    #!/bin/sh
    
    ssh -t "$*"
    

    将其保存为ssh-t 或其他名称chmod +x ssh-t,并将其放在PATH 中的某个位置。然后设置GIT_SSH=ssh-t 告诉Git 使用这个脚本。

    【讨论】:

    • 这可能会奏效,但我正在通过 git push 启动 ssh 连接。有没有办法注入 -t 选项?
    • @garbagecollector:GIT_SSH 环境变量告诉 Git 哪个命令用于 ssh。如该页面所述,要将选项传递给 ssh,您可以将其包装在另一个 shell 脚本中,或使用 ~/.ssh/config(我推荐后者)。
    • @garbagecollector:根据SSH - How to include “-t command” in the ~/.ssh/config file,似乎没有-t 的等效配置选项。我会改为创建一个 shell 脚本(参见编辑后的答案)。
    • 您可能希望使用“$@”而不是“$*”,这样 ssh-t 的单独参数就不会被组合成一个 ssh 的参数。
    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2015-08-17
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    相关资源
    最近更新 更多