linux - 通过 ssh 设置 X11 转发

标签 linux ssh beagleboard archlinux

我正在尝试设置 x11 转发以在嵌入式机器人平台上监控视频,但我似乎无法让电路板生成图形输出。我在直接通过以太网连接的 Beagleboard xM 上运行 Arch Linux(不过,我计划将来使用 WiFi)。当我尝试设置 DISPLAY 变量时,它会接受它,但是当我尝试运行 x11 应用程序时,它会说:

(Object:287): Gtk-WARNING **: cannot open display: [displaynamehere]

显然 [displaynamehere] 是我试图设置为显示的任何内容,但似乎没有显示位置有效。奇怪的是,每当我通过 ssh -X 连接时,它不会给我任何错误,也不会保存我的 DISPLAY 变量。

(编辑)我还检查了调试日志并得到了这个输出:

debug2: load_server_config: filename /etc/ssh/sshd_config
debug2: load_server_config: done config len = 315
debug2: parse_server_config: config /etc/ssh/sshd_config len 315
debug3: /etc/ssh/sshd_config:53 setting AuthorizedKeysFile .ssh/authorized_keys
debug3: /etc/ssh/sshd_config:75 setting ChallengeResponseAuthentication no
debug3: /etc/ssh/sshd_config:96 setting UsePAM yes
debug3: /etc/ssh/sshd_config:101 setting X11Forwarding yes
debug3: /etc/ssh/sshd_config:104 setting PrintMotd no 
debug3: /etc/ssh/sshd_config:108 setting UsePrivilegeSeparation sandbox     
debug3: /etc/ssh/sshd_config:124 setting Subsystem sftp /usr/lib/ssh/sftp-server
debug1: sshd version OpenSSH_6.3, OpenSSL 1.0.1e 11 Feb 2013
debug3: Incorrect RSA1 identifier
debug1: read PEM private key done: type RSA
debug3: Incorrect RSA1 identifier
debug3: Could not load "/etc/ssh/ssh_host_rsa_key" as a RSA1 public key
debug1: private host key: #0 type 1 RSA
debug3: Incorrect RSA1 identifier
debug1: read PEM private key done: type DSA
debug3: Incorrect RSA1 identifier
debug3: Could not load "/etc/ssh/ssh_host_dsa_key" as a RSA1 public key
debug1: private host key: #1 type 2 DSA
debug3: Incorrect RSA1 identifier
debug1: read PEM private key done: type ECDSA
debug3: Incorrect RSA1 identifier
debug3: Could not load "/etc/ssh/ssh_host_ecdsa_key" as a RSA1 public key
debug1: private host key: #2 type 3 ECDSA
debug1: rexec_argv[0]='/usr/bin/sshd'
debug1: rexec_argv[1]='-ddd'
debug3: oom_adjust_setup
Set /proc/self/oom_score_adj from 0 to -1000
debug2: fd 3 setting O_NONBLOCK
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug2: fd 3 setting O_NONBLOCK
debug3: sock_set_v6only: set socket 3 IPV6_V6ONLY
debug1: Bind to port 22 on ::.
Server listening on :: port 22.

如有任何建议,我将不胜感激,我已经在谷歌上尝试了将近一个星期,但无济于事。

非常感谢!

最佳答案

在服务器上

编辑/etc/ssh/sshd_config:

AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no

重启 sshd 守护进程:

sudo service sshd restart
# or
sudo /etc/init.d/ssh restart
# or whatever way of restarting your box services works on your distro...

安装软件包(Ubuntu/Debian):

apt-get -y update
apt-get -y install xauth

安装软件包(RHEL/CentOS):

yum -y update
yum -y install xauth

现在退出服务器:

exit

在客户端

在本地设置DISPLAY环境变量:

export DISPLAY=:0.0

并启动到服务器的可信 SSH 连接:

ssh -Y $ssh_user@$ssh_server

使用图形应用验证成功。如果需要,安装支持 X11 转发的应用程序。例如:

yum -y install xclock

和 Action :

for i in {1..3} ; do bash -c "xclock &" ; done ;

关于linux - 通过 ssh 设置 X11 转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589844/

相关文章:

azure - 如何在 Azure VM 中创建多个帐户?

linux - 如何在启动时将 GPIO 设置为 "low"?

c++ - 如何对进程的 'manager' 和 'worker' 线程进行优先级排序(或设置调度策略)?

linux - 在 Linux 中的 WAS 服务器中设置类路径

sql-server - cakephp 2.0.5 Sqlserver 需要数据库连接

linux - VSO 通过 SSH 任务复制文件 - 它可以复制到我自己的本地 linux 机器(树莓派)吗?

ssh - diffie-hellman ssh key 交换

c++ - 让软件中断在裸机 Beaglebone Black 中工作

c - 读取 C 中的端口 (GPIO) 值 (beagleboard-xm)

android - 交叉编译时链接到共享对象库 (.so)