本文主要介绍了SSH在Ubuntu环境下的安装和使用的详细说明。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。
SSH指的是Secure Shell,这是一种安全的传输协议。Ubuntu客户端可以通过SSH访问远程服务器。
SSH的介绍和工作机制
SSH简介
传统的网络服务程序,如ftp、POP、telnet等,本来就不安全,因为它们使用明文在网络上传输密码和数据,别有用心的人很容易截获这些密码和数据。而且这些服务程序的安全验证方式也有其弱点,即容易被“中间人”攻击。所谓“中间人”攻击,就是“中间人”伪装成真实的服务器接收你发送给服务器的数据,然后伪装成你发送数据给真实的服务器。当服务器和你之间的数据传输被“中间人”改变了,就会出现严重的问题。
从前,一个叫塔图伊尔的人?nen的芬兰程序员开发了一种叫做SSH(Secure Shell的缩写)的网络协议和服务软件。通过使用SSH,可以对所有传输的数据进行加密,让“中间人”攻击无从下手,还可以防止DNS和IP欺骗。一个额外的好处是传输的数据是压缩的,所以传输速度可以加快。SSH有很多功能。虽然很多人只是把Secure Shell作为Telnet的替代品,但是你可以用它来保护你的网络连接的安全。您可以通过本地或远程系统上的安全Shell转发其他网络通信,如POP、X、PPP和FTP。您还可以转发其他类型的网络通信,包括CVS和任何其他TCP通信。此外,您可以使用带有TCP wrapper的安全外壳来加强连接的安全性。此外,Secure Shell还有其他一些方便的功能,可用于Oracle、远程备份和SecurID卡等附加身份验证等应用。
SSH的工作机制
SSH分为两部分:客户机部分和服务器部分。
服务器是一个恶魔,它在后台运行并响应来自客户端的连接请求。服务器一般是sshd进程,提供远程连接的处理,包括公钥认证、密钥交换、对称密钥加密和不安全连接。
客户端包括ssh程序和其他应用程序,如scp(远程复制)、slogin(远程登录)、sftp(安全文件传输)等。
它们的工作机制大致是:本地客户端向远程服务器发送连接请求,服务器检查应用的数据包和IP地址,然后将密钥发送给SSH客户端,再将密钥发送回本地的服务器,从此建立连接。我刚才说的只是SSH连接的一般流程。SSH 1.x和SSH 2.x在连接协议上还是有一些区别的。
SSH被设计成在不使用超级服务器(inetd)的情况下独立工作。虽然SSH进程可以在inetd上通过tcpd运行,但是完全没有必要。SSH服务器启动后,sshd运行并监听默认端口22(您可以使用# ps -waux | grep sshd来查看sshd是否已经正确运行)。如果不是SSH通过inetd启动,那么SSH会一直等待连接请求。当请求到来时,SSH守护进程将生成一个子进程,这个子进程将进行连接处理。
但是由于版权和加密算法的限制,现在很多人转向OpenSSH。OpenSSH是SSH的替代品,而且是免费的。
SSH由客户端和服务器软件组成,有两个不兼容的版本:1.x和2.x,使用SSH 2.x的客户端程序无法连接SSH 1.x的服务程序,OpenSSH 2.x同时支持SSH 1.x和2.x。
SSH分客户端openssh-client和openssh-server
如果只是想登录其他机器的ssh,只需要安装openssh-client即可(ubuntu有默认安装,如果没有,sudo apt-get安装OpenSSH-Client),如果想在这台机器上打开SSH服务,则需要安装openssh-server。
一、安装客户端
Ubuntu默认安装了ssh客户端。
Sudo apt-get安装ssh或sudo apt-get安装OpenSSH客户端
ssh-keygen
(按Enter键设置默认值)
默认生成id_rsa和id_rsa.pub文件,分别是私钥和公钥。
说明:如果sudo apt-get insall ssh失败,可以使用sudo apt-get install OpenSSH-client进行安装。
假设服务器ip为192.168.1.1,ssh服务端口号为22,服务器上有一个用户作为root;
使用ssh登录到服务器的命令是:
sshp 22 root @ 192 . 168 . 1 . 1
输入root用户的密码。
二、安装服务端
Ubuntu默认没有安装SSH服务器。使用以下命令安装它:
安装openssh-server
然后确认sshserver是否启动:(或使用“netstat -tlp”命令)
ps -e|grep ssh
如果只有ssh-agent可用,则ssh-server尚未启动,需要/etc/init.d/ssh start。如果看到sshd,说明ssh-server已经启动。
如果没有,你可以这样开始:
sudo/etc/init.d/ssh start
事实上,如果没有特殊要求,OpenSSH服务器会安装在这里。但是,进一步设置可以使OpenSSH登录时间更短、更安全。这一切都是通过修改openssh的配置文件sshd_config来实现的。
三、SSH配置
Ssh-server配置文件位于/etc/ssh/sshd_config中,您可以在其中定义Ssh的服务端口。默认端口是22,你可以自己定义其他端口号,比如222。然后重新启动SSH服务:
sudo /etc/init.d/sshresart
通过修改配置文件/etc/ssh/sshd_config,您可以更改ssh登录端口并禁止root登录。更改端口可以防止被端口扫描。
sudo CP/etc/ssh/sshd _ config/etc/ssh/sshd _ config . original
sudochmod a-w/etc/ssh/sshd _ config . original
编辑配置文件:
gedit /etc/ssh/sshd_config
找到#Port 22,删除注释,将其修改为五位数端口:Port 22333。
找到#PermitRootLogin yes,去掉注释,修改为:PermitRootLogin no
配置后重新启动:
sudo/etc/init.d/ssh重启
四、SSH服务命令
服务停止:sudo /etc/init.d/ssh停止
启动服务:sudo /etc/init.d/ssh start
重新启动服务:sudo /etc/init.d/sshresart
断开连接:退出
登录:sshroot@192.168.0.100
作为192.168.0.100机器上的用户,您需要输入密码。
五、SSH登录命令
常见格式:ssh[-登录名称] [-p端口] [用户@]主机名
更多细节可以用ssh -h H查看。
举个例子
未指定用户:ssh 192.168.0.1
指定用户:
ssh -l根192.168.0.1
ssh root@192.168.0.1
如果您修改了ssh登录端口,您可以:
ssh -p 22333 192.168.0.111
216.230.230.105 p 22333
root@216.230.230.105
六、提高登录速度
远程登录时,您可能会发现输入用户名后需要很长时间才会提示输入密码。其实这是因为sshd需要检查客户端的dns信息。您可以通过禁用此功能来大大提高登录速度。首先,打开sshd_config文件:
sudo nano /etc/ssh/sshd_config
找到GSSAPI选项部分,并注释掉以下两行:
# gssapiaauthentication yes # gssapidelegatecredentials no,然后重新启动ssh服务:
sudo /etc/init.d/ssh重启
再次尝试登录,应该会很快。
七、利用 PuTTy 通过证书认证登录服务器
在SSH服务中,所有内容都是加密传输的,安全性基本有保障。但是如果可以使用证书认证,安全性就上一层楼,经过一定的设置,还可以达到证书认证自动登录的效果。
首先,修改sshd_config文件并打开证书身份验证选项:
rsauthentication yes publikeyaauthentication yes sauthorizedkeys file % h/。ssh/authorized _ keys修改后,重启ssh服务。
接下来,我们需要为SSH用户建立私有和公共密钥。首先,要登录需要建立密钥的账户,请在这里注销root用户,必要时用su命令切换到其他用户。然后运行:
ssh-keygen
在这里,我们可以将生成的密钥存储在默认目录中。在建立的过程中,会提示您输入passphrase,相当于给证书加了密码,也是提高安全性的措施,这样即使证书被不小心复制走也不会害怕。当然,如果这个留空的话,后面还可以实现PuTTy通过证书认证的自动登录。
Ssh-keygen命令生成两个密钥。首先,我们需要重命名公钥,并将其留在服务器上:
cd ~/。ssh mv id_rsa.pub授权_密钥
然后从服务器上复制私钥id_rsa,删除服务器上的id_rsa文件。
服务器上的设置已经完成,下面的步骤需要在客户端计算机上完成。首先,我们需要将id_rsa文件转换成PuTTy支持的格式。这里我们需要使用工具推杆:
在PuTTyGen界面点击Load按钮,选择id_rsa文件,输入passphrase(如果有),然后点击Save PrivateKey按钮,这样PuTTy接受的私钥就准备好了。
打开PuTTy,输入会话中服务器的IP地址,点击Connection-SSH-Auth下的Browse按钮,选择刚刚生成的私钥。然后返回到连接选项,在自动登录用户名中输入证书所属的用户名。返回“会话”选项卡,输入名称并保存此会话。点击底部的Open,应该可以通过证书认证登录到服务器。如果有passphrase,登录时会要求输入passphrase,否则直接登录服务器,非常方便。
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。