如何通过ssh从终端打开远程python程序?
我输入ssh -X name@blah.edu
并要求输入密码,我输入并登录。
name@blah.edu:~$ program.py
然后没有任何反应,它应该实际弹出。 为什么会发生这种情况,我该如何解决?
问题是SSH连接不通过连接转发X11命令。
如果您用于连接的计算机正在运行Linux(或其他具有X的操作系统),则只需在调用SSH时传递-X
参数。
如果要与Microsoft Windows连接,则需要一个可以将X11命令转换为Windows API命令的程序。 试着看看XMing或cygwin 。
您可能还需要在/etc/ssh/sshd_config
添加/取消注释以下行:
X11Forwarding是的
如果没有这个,-X标志就没用了。
您可能需要在SSH服务器的配置文件/etc/ssh/sshd_config
启用X转发:
X11Forwarding yes
如果您无权访问此文件,我担心您必须要求您的系统管理员启用它。
听起来你的DISPLAY变量已经设置好了。 当我通过手机(通过X转发)连接到我的机器并执行以下操作时:
oli@bert:~$ echo $DISPLAY localhost:10.0
虽然这不是保证,但X转发倾向于使用高显示数字。
如果您的~/.bashrc
设置为覆盖显示,您可能会看到类似的内容:0
。
连接后,您可以猜测并覆盖DISPLAY
变量到localhost:10.0
:
export DISPLAY=localhost:10.0
找到您在本地bash文件中设置显示的位置。
我应该补充一点,可以在SSHd设置中关闭X转发( /etc/ssh/sshd_config
),这样你也可以检查一下。
就像你在电脑里一样
ssh -X remotehost python remotepythonprogram.py
要查看程序代码,
ssh -X remotehost less remotepythonprogram.py
如果你想转发X,Oliver的解决方案就是要走的路,但要明白这可能是带宽密集型的。
另一种解决方案是使用命令行编辑器,如vim
或nano
。 就个人而言,我会选择vim
。 它确实有一个更陡峭的学习曲线,但是一旦你超越了它,你将不想回到其他任何东西=)你可以通过执行vimtutor
来获得关于基础知识的教程来开始学习它。