SSH (Secure SHell) 通信协议系以安全与可靠考量。以 SSH 连接是安全的:伙伴需认证且数据交换经过加密。
SSH 还涉及两个文件传输服务。 scp
是一个可以像cp
命令一样使用的命令行工具,除了指向其他机器的路径需要加机器名冒号前缀。
$
scp file machine:/tmp/
sftp
是一个交互命令,类似于 ftp
。在一个单独会话中, sftp
可以传输多个文件,并且可以远程操作文件(删除,重命名,更改许可,等等)。
Debian 使用 OpenSSH,一个由 OpenBSD
项目(注重安全,基于 BSD 内核的自由操作系统)维护的自由版本,它效仿了芬兰 SSH Communications Security Corp 公司开发的原始 SSH 软件。该公司最初将 SSH 作为自由软件开发,但是最终决定在专有许可下继续开发。然后,OpenBSD 项目创建了 OpenSSH 维护 SSH 的自由版本。
OpenSSH 分裂为两个软件包:客户端是 openssh-client 软件包,服务器端是 openssh-server 软件包。ssh 超软件包依赖这两个部分且需安装它们 (apt install ssh
)。
每次有人通过 SSH 登入,远程服务器询问密码来授权用户。如果想要自动连接或者使用需要频繁通过 SSH 连接的工具,这就会产生问题。这就是为什么 SSH 提供一种基于密钥的认证系统。
户在客户机上用 ssh-keygen -t rsa
产生密钥对;公共密钥存储在~/.ssh/id_rsa.pub
中,而对应的私有密钥存储在~/.ssh/id_rsa
中。然后,用户使用ssh-copy-id server
将他们的公共密钥添加到服务器上的 ~/.ssh/authorized_keys
文件中。如果私有密钥在创建的时候没有“口令密语”保护,随后所有在服务器上的登录将不需要口令。然而,私有密钥在每次输入口令时都必须被解密。幸运的是, ssh-agent
允许我们把私有密钥放在内存中而不必频繁重新输入口令。为此,可以简单的使用 ssh-add
(每个工作会话一次)来指明该会话已经和 ssh-agent
功能实例相关联。Debian 在图形界面会话中默认激活这一特性,也可以通过改变 /etc/X11/Xsession.options
来停用。对于控制台会话,可以使用 eval $(ssh-agent)
手动启动。
SSH 协议允许转发图形数据(“X11”会话,源于最广泛传播Unix图形系统的名字);然后,服务器为这些数据保留固定通道。特别地,远程执行的图形程序可以在本地系统X.org服务器屏幕上显示,并且整个会话(输入和显示)都是安全的。由于该特性允许远程应用与本地系统交互,因此默认是关闭的。您可以指明X11Forwarding yes
参数,将其写入服务器配置文件(/etc/ssh/sshd_config
)以启用该功能。最后,用户必须通过添加 -X
选项到 ssh
命令行中以提出功能请求。
它的
-R
和
-L
选项允许
ssh
在两个机器间添加 “加密信道”,把本地 TCP 端口 (见专栏
基本 TCP/UDP) 映射至远程机器或反之。
运行
ssh -L 8000:server:25 intermediary
命令,将会建立同服务器主机
intermediary 的SSH 会话,并侦听本地端口8000 ¼参考see
图 9.3 “使用SSH转发本地端口”)。对于任何建立在该端口的连接,
ssh
将会发起从电脑
intermediary 到
server 端口25 的连接,并将两个连接绑定。
命令
ssh -R 8000:server:25 intermediary
也会建立电脑
intermediary 的SSH 会话,但是在本机
ssh
侦听端口8000 (参考
图 9.4 “使用SSH转发远程端口”)。在该端口建立的连接将
ssh
打开本机到
server25 端口的连接,并将两个连接绑定。
两种情况下,连接建立在server 主机的25 端口,它会透过SSH 隧道建立本地机器和中介机器的连接。在头一种情况下,到该隧道的入口是本地端口8000,数据在定向到公共网络的server 之前,流向 intermediary 。在第二种情况下,隧道输入输出被保留;入口是 intermediary 的8000 端口,输出在本地主机,然后数据被定向到 server。实际上,服务器不是本地机器就是中介机器。这样SSH 保护了一端到另一端的连接。
VNC (Virtual Network Computing)允许远程接入图形桌面。
该工具主要用于技术支持;管理员可以看到用户面临的错误,并演示正确的操作而不必待在他们旁边。
首先,用户必须授权共享其进程。在 Jessie 配置面版 (不同于稍早的 Debian 版本,用户必须安装并运行 vino
) 的GNOME 图形桌面环境已有此选项。KDE 桌面环境仍需使用 krfb
才能经由 VNC 共享既有的进程。其他皂图形桌面环境,x11vnc
命令 (在同名的 Debian 软件包内) 也能达到同样的结果;以明确的图标标明。
从 VNC 取得图形进程时,管理者必须链接至 VNC 客户端。GNOME 有 vinagre
和 remmina
命令链接,而 KDE 使用 krdc
(在 → → 菜单内)。还有使用命令行的其他 VNC 客户端,诸如 xvnc4viewer
在 Debian 的同名软件包内。链接后,管理者可以看到远程的桌面、操控远程桌面、并让远程用户知道运作的方式。
VNC 也可供移动用户、或公司运行者使用,这些人偶而需要从家中的电脑远程登录办公室的桌面电脑。这种配置稍为复杂些:首先安装 vnc4server 软件包,改变显示管理者的配置,以便接受 XDMCP Query
请求 (给 gdm3
,添加 Enable=true
于 /etc/gdm3/daemon.conf
的 “xdmcp” 区块),然后以 inetd
启动 VNC 服务器,接着在用户试图登录时,自动开启进程。例如,可以在 /etc/inetd.conf
内加入这一列:
5950 stream tcp nowait nobody.tty /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
重新定向输入链接至显示管理者,解决认证的问题,因为只有本地帐号的用户才能通过 gdm3
登录画面 (或同级的 kdm
、xdm
等)。当此作业允许同时登录多个用户 (服务器够力是前提),就能够提供完整的桌面给远程用户 (或稍为不够力的桌面系统,则需要配置为精简客户)。使用只需以 vncviewer server:50
登录服务器画面,因为用到的端口号是 5950。