ssh 使用和配置

1
sudo apt-get install openssh-server

  1. 生成 ssh 密钥和公钥
1
ssh-keygen -t rsa

其中在 ~/.ssh 文件夹下,id_rsa 是私钥,id_rsa.pub 是公钥。

  1. 将公钥放在服务器上
  2. 测试 ssh 连接
1
ssh -p port user@hostname

连接成功会出现 Welcome to Gerrit Code Review 字样!

/etc/ssh/ssh_config/etc/ssh/sshd_config 都是 ssh 的配置文件,区别在于 ssh_config 是客户端的配置文件,sshd_config 是服务端的配置文件。

/etc/ssh/sshd_config 部分文件内容

1
2
3
Port 22  # 默认端口号为 22
PermitRootLogin no  # 禁止 root 用户登录
X11Forwarding yes  # 允许 X11 图形化
1
2
3
service sshd start    # 启动 sshd
service sshd stop     # 停止 sshd
service sshd restart  # 重启 sshd

修改 ~/.ssh/config 文件设置别名

1
2
3
4
5
Host Alias
    HostName ip[192.168.XXX.XXX]
    Port 22
    User zhengqijun
    IdentityFile ~/.ssh/id_rsa

直接输入 ssh Alias 命令就可以直接连接了!十分方便!

ssh 生成的公钥拷贝到目标机的 ~/.ssh/authorized_keys 中,就可以实现免密登录了。ssh 连接连密码都省了,偷懒小能手!

1
ssh-copy-id user@hostname

scp 是基于 ssh 登陆进行安全的远程文件拷贝命令,所以可以通过网络传输文件。

1
2
3
4
5
scp local_file remote_username@remote_ip:remote_folder  # 传输本地文件到目标机
scp -r local_folder remote_username@remote_ip:remote_folder  # 传输本地目录到目标机

scp remote_username@remote_ip:remote_folder local_file  # 传输本地文件到目标机
scp -r remote_username@remote_ip:remote_folder local_folder  # 传输本地目录到目标机

~/.ssh/config 中配置如下:

1
2
3
4
5
6
7
8
Host gateway
  HostName 192.168.168.52
  User gateway
Host chej
  HostName 192.168.211.100
  Port 22
  User root
  ProxyJump gateway

通过命令直接登录,无需先到跳板机 gateway

1
ssh chej

Linux 本身是没有图形化界面的,所谓的图形化界面系统只不过中 Linux 下的应用程序。这一点和 Windows 不一样。Windows 从 Windows 95 开始,图形界面就直接在系统内核中实现了,是操作系统不可或缺的一部分。Linux 的图形化界面,底层都是基于 X 协议。

X11 是 X 协议的某个版本,,应用程序通过 X 协议告诉服务器端需要显示什么图形,然后服务器端通过 X server 来显示。

但是在远程连接时,服务器是本地的机器,客户端是远程服务器上的程序。因为我们是想要在本地显示远程服务器上的应用结果。

通过安装 XQuartz,Mac 就可以做一个 X11 server,这样在 Mac 上就能显示远程服务器的应用程序。当 XQuartz 在运行时,会显示图标。

通过 xclock 命令测试,如果一切顺利,应该在 Mac 上会弹出界面。

1
xclock

能够做到远程执行命令显示图形界面并调试,还是很诱人的。

这个插件就可以在 vscode 终端中使用 X11 forwarding 了。

Windows 下有一个终端 MobaXterm,自带 X server。