生活中,也许你会碰到这些情况,比如在家想处理一下公司的电脑上业务,或者是需要把你做好的网页上传到云服务器中。 方法其实有很多种,今天我们来聊下其中比较 Geek 的一种做法,通过在命令行中输入命令来实现远程登录。

1 SSH 是什么?

我们需要用到一个网络协议——SSH ,即安全外壳协议(Secure Shell)。 如其名所示,它是一个专门为远程登录会话和其他网络服务提供安全性的协议,利用 SSH 协议可以有效防止在远程管理过程中的信息泄露。 一开始它只是 Unix 系统上的一个程序,由于安全好用,很快扩展到其他平台。我们这里只讨论在 Linux shell 中的用法。

2 基本用法

一般情况下,我们使用下面这条命令进行登陆,user_name 是你的用户名,ip_address 是你的远程 IP 地址。

ssh user_name@ip_address

SSH 的默认端口是 22,你还可以使用 -p 来显式指定端口,比如指定 1314 端口。

ssh -p 1314 user_name@ip_address

当你输入上述的其中一行命令后,它会提示你输入密码。如果密码验证成功,恭喜你!可以进行远程操作了。

但这样有一个问题,是如果我想编辑远程很长一段代码怎么办,使用 vim 在命令行中编辑及其不方便(-大佬:命令没记住就在这瞎说,你看我怎么用的那么六!-我:。。。),那 SSH 可以调用图形界面吗?

3 调用图形界面

没错,在 SSH 中是可以做到调用图形界面的!

首先在服务器端(即你要连接的远端电脑) 做如下配置:

# 安装SSH服务器
sudo apt-get install openssh-server

# 配置允许X11转发命令
sudo gedit /etc/ssh/sshd_config

在 sshd_config 设置为 X11Forwarding yes,一般操作为去掉 # ,把 no 改为 yes。

启动服务命令:

sudo /etc/init.d/ssh restart

然后在客户端(你本地在用的电脑)做如下配置:

# 安装ssh客户端
sudo apt-get install openssh-client

# 配置允许X11转发命令
sudo gedit /etc/ssh/ssh_config

在ssh_config设置:

ForwardAgent yes 
ForwardX11 yes
ForwardX11Trusted yes

连接命令:

ssh -X user_name@ip_address 

将远端屏幕映射到本地:

export DISPLAY=localhost:10.0

在命令行中调用时钟程序进行测试:

xclock

如果你的操作没有问题,你很快就会看到一个时钟出现在你的本地桌面上!

4 注意

  1. 一般情况下,由于网络传输速度问题,尽量不要开大型软件,否则会很卡。

  2. 使用系统自带软件效果会比较好,可是我的 Atom 怎么都打开不了,最后只能用 Gedit 看了。

  3. 如果根据教程操作但出现异常,请在后台给我留言。我们商量着是否能一起解决它。

  4. 最后的最后提一个问题:如果你要连接的远程电脑在内网里怎么办?没有公网IP就没法直接连接啊!