OpenSSH是最流行的文件传输和远程登录Linux应用程序之一,它提供了多种在客户端和服务器之间建立加密的远程终端和文件传输连接的方式。 OpenSSH Secure ">Copy (SCP) 和 Secure FTP (SFTP) 程序是FTP的安全替代品, 同时Secure Shell (SSH) 常常被用作是TELNET的一个默认替代程序。OpenSSH 并不局限于Linux系统; SSH 和 SCP 客户端可以运行在包括windows在内的绝大多数操作系统上。
数据加密通过使用特殊的数学算法来实现,这种算法把数据流中的数据分解以便使其对任何没有相应解密算法的人不可读。通过使用加密密钥,这种密钥被用来改进算法实施加密的方式,数据加密将会变得更加的可靠。只有当你拥有解密密码和相应的解密程序的时候你才能得到恢复原始数据。数据加密帮助人们阻止未授权的用户得到这些数据。SSH通过产生随机私有和公有密钥来实现加密过程。这些密钥通常只会生成一次,但是你还可以重置密钥,尽管这样会降低安全度。 如果要成功的传送加密数据,接收端首先必须拥有一份发送端的公共密钥拷贝。 以下是使用SSH进行数据传输的具体过程。
当你登陆到一个SSH服务器的时候,你将会被提醒在继续下一步之前是否下载服务器的公共密钥。同时你计算机上的SSH客户端密钥也将被上传到服务器。 这样一来,位于SSH连接端的每一台电脑都可以得到其他电脑的密钥,也就意味着这些电脑能够打开其他SSH连接端和“ 通道”发送的加密数据。
Linux中的SSH客户端用户接受到的所有公共密钥和提供这些的密钥的IP地址都存储在一个叫~/.ssh/known_hosts的文件中。当一个密钥和它相对应的IP地址不再匹配时,SSH就判断为出现了错误。 例如,当重新安装操作系统或是升级了SSH应用程序后,这些密钥可能会重置,从而使密钥和IP不匹配。当然,一些骇客行为也可以造成密钥的变更。 为了确保变更的安全性,你从服务器上获得的公有和私有密钥都存储在/etc/ssh/directory文件夹中。
注意: .ssh文件夹是一个隐藏文件夹,所有的隐藏文件夹名和隐藏文件名都以英文句号为前缀。ls -a命令能够显示指定文件夹中所有一般文件和隐藏文件。 ~/符号一般等同于你的个人文件夹并且它在能够被所有的Linux命令所识别。
Linux使用一些其他的密钥文件同样达到匿名登陆和使用SSH和SCP拷贝文件到远程服务器上的功能。这样,SSH连接就成功建立了,然后客户端将自动发送它的公用密钥以使服务器端在下次连接建立时能探测用户存储在个人文件夹中的密钥列表并核对密钥是否匹配。如果匹配,用户将允许登陆。这些文件在创建后同样被存储在你的~/.ssh文件夹中。 id_dsa和id_dsa.pub文件分别是你的私有和公有密钥,而authorized_keys文件存储着你从远程主机上接受的所有被授权的可以使用户匿名登陆他们帐户的公有密钥。
开始OpenSSH
OpenSSH将会随Linux系统默认安装。 但是在Ubuntu或是Debian上,你不得不在开始安装系统后手动安装它。 在Ubuntu或是Debian中,使用 apt-get install ssh 命令就能激活SSH安装程序。
因为SSH和SCP是同一个应用程序的组成部分,所以他们共享配置文件以及由相同的启动脚本/etc/init.d/sshd控制。
在Fedora/Redhat中,你可以用chkconfig命令来配置SSH随机启动,而在Ubuntu/Debian中则是sysv-rc-conf命令。
[root@bigboy tmp]# chkconfig sshd on
你可以通过运行sshd启动脚本,在系统启动后开启、终止和重启SSH。
[root@bigboy tmp]# service sshd start[root@bigboy tmp]# service sshd stop[root@bigboy tmp]# service sshd restart
当你每次对配置文件进行修改后,请记住重新启动SSH进程以便配置生效。
测试SSh的运行状态
你可以使用以下命令来测试SSH是否运行
[root@bigboy tmp]# pgrep sshd
你应该可以看到一个正在运行的进程号。
/etc/ssh/sshd_config配置文件
SSH的配置文件是 /etc/ssh/sshd_config。SSH默认监视你所有的NICs并使用TCP端口22。 下面是一小段配置文件内容:
# The strategy used for options in the default sshd_config shipped with# OpenSSH is to specify options with their default value where# possible, but leave them commented. Uncommented options change a# default value.#Port 22#Protocol 2,1#ListenAddress 0.0.0.0#ListenAddress ::
SSH 版本 1 和 2
SSH1版虽然在过去运行完善,但是最终还是出现了许多不足。最好的解决方法便是升级到SSH2版。在/etc/ssh/sshd_config配置文件的协议状态中设置2以使SSH2版能够在系统启动时默认运行,当然不要忘记重启SSH使你的改变生效。
## File: /etc/ssh/sshd_config#Protocol 2