Code前端首页关于Code前端联系我们

Ubuntu环境下安装和使用SSH(客户端通过SSH访问远程服务器)详解

terry 2年前 (2023-09-28) 阅读数 54 #未命名

SSH是指Secure Shell,是一种安全传输协议。 Ubuntu 客户端可以通过 SSH 访问远程服务器。

SSH介绍及工作机制

SSH介绍

传统的网络服务程序,如:ftp、POP、telnet等,因为它们在网络上以明文方式传输密码和数据,本质上是不安全的,别有用心的人动机可以很容易地抓住这些密码和数据。而且,这些服务程序的安全验证方法也有其弱点,那就是很容易受到“中间人”攻击。所谓“中间人”攻击方式,就是“中间人”冒充真正的服务器接收你发送给服务器的数据,然后冒充你,将数据发送给服务器。真实的。服务器。服务器和你之间的数据传输被“中间人”改变后,就会出现严重的问题。

曾几何时,芬兰的程序员(程序员),名叫Tatu·Yläyao,开发了一种名为 SSH(Secure SHell 的缩写)的网络协议和服务软件。使用 SSH 可以加密所有传输的数据,从而杜绝中间人攻击并防止 DNS 和 IP 欺骗。另一个优点是传输的数据被压缩,从而可以加快传输速度。 SSH 具有许多功能,尽管许多人仅将 Secure Shell 视为 Telnet 的替代品,但您可以使用它来保护您的网络连接。您可以通过本地或远程系统上的 Secure Shell 转发其他网络流量,例如 POP、X、PPP 和 FTP。您还可以转发其他类型的网络流量,包括 CVS 和其他 TCP 流量。此外,您可以使用带有 TCP 包装器的 Secure Shell 来提高连接的安全性。除此之外,Secure Shell 还有一些其他方便的功能,可用于 Oracle 等应用程序。您还可以将其用作 SecurID 卡进行远程备份和附加身份验证。

SSH的工作机制

SSH分为两部分:客户端部分和服务器部分。

服务器是一个守护进程,在后台运行并响应来自客户端的连接请求。服务器通常是 sshd 进程,它提供远程连接管理,通常包括公钥认证、密钥交换、对称密钥加密和不安全连接。

客户端包括ssh程序以及scp(远程复制)、slogin(远程登录)、sftp(安全文件传输)等其他应用程序。

它们的工作机制大致是本地客户端发送连接向远程服务器发出请求,服务器检查请求的数据包和IP地址,然后将密钥发送给SSH客户端,然后本地客户端将密钥发送回服务器端,连接建立。刚才讲的只是SSH连接的大致流程。 SSH 1.x 和 SSH 2.x 之间的连接协议存在一些差异。

SSH 设计为无需使用超级服务器 (inetd) 即可独立工作。虽然可以通过 inetd 上的 tcpd 运行 SSH 进程,但这完全没有必要。启动 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有默认安装,如果没有,sudoapt - get install openssh-client),如果要在本机开启SSH服务,必须安装openssh-server。

1。安装客户端

Ubuntu 默认安装了 ssh 客户端。

sudo apt-get install ssh 或者 sudo apt-get installopenssh-client
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登录服务器的命令是:

>ssh –p 22 root@192.168.1.1
>输入root用户的密码

2.安装服务器

Ubuntu SSH Server默认是没有安装的。使用以下命令安装:

sudo apt-get install openssh-server

然后确认 sshserver 是否启动:(或使用“netstat -tlp”命令)

ps -e|grep ssh

如果只有 ssh-agent 而 ssh-server 没有启动,则必须 /etc /init.d/ssh 启动。如果看到 sshd,则表示 ssh 服务器已启动。

如果没有,你可以这样启动:

sudo/etc/init.d/ssh start

其实,如果你没有什么特殊需求,这里已经安装了OpenSSH Server。但通过额外的设置,OpenSSH 登录时间可以变得更短、更安全。这一切都是通过修改openssh配置文件sshd_config来实现的。

3。 SSH 配置

ssh 服务器的配置文件位于 /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

找到#PermitRoot Login,更改为:PermitRootLogin否

配置完成后重启:

sudo/etc/init.d/ssh restart

4. SSH服务命令

停止服务:sudo /etc/init.d/ssh stop

启动服务:sudo /etc/init.d/ssh start

重启服务:sudo /etc/init.d d /sshresart

断开连接:退出

登录:sshroot@192.168.0.100

root 是 192.168.0.100 计算机上的用户,必须输入密码。

5。 SSH登录命令

常用格式:ssh [-llogin_name] [-p port] [user@]hostname

可以使用 ssh -h 查看更多详细信息。

示例

未指定用户:

ps -e|grep ssh

ssh 192.168.0.1

指定用户:

ssh -l root 192.168.0.1
ssh root@192.168.0.1 

如果可以:已更改端口,e。登录速度

远程登录时您可能会发现,输入用户名后,需要等待很长时间才能要求您输入密码。其实这是由于sshd需要检查客户端的dns信息导致的。通过禁用此功能,您可以显着提高登录速度。首先打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

找到 GSSAPI 选项部分,注释掉以下两行:

#GSSAPIAuthentication yes #GSSAPIDelegateCredentials no 然后重新启动 ssh 服务, 应该又可以了 时间差不多了

7 。使用PuTTy通过证书认证登录服务器

在SSH服务中,所有内容都是加密传输的,安全性基本得到保证。但如果能够使用证书认证,安全性将会提升一个台阶,并且通过一定的设置,还可以实现通过证书认证自动登录。 1

接下来我们需要为 SSH 用户创建私钥和公钥。首先,登录需要创建密钥的账户。这里注意一定要退出root用户。如有必要,请使用 su 命令切换到另一个用户。然后运行:

ssh-keygen

这里我们可以将生成的密钥保存在默认目录中。在创建过程中,会要求您输入密码,相当于为证书添加了密码。这也是提高安全性的一个措施,这样即使证书被不小心复制了,你也不会害怕。当然,如果这里为空,PuTTy稍后可以通过证书认证自动登录。

命令 ssh-keygen 将生成两个密钥。首先,我们需要重命名公钥并将其保留在服务器上:

cd ~/.ssh mv id_rsa.pub authorized_keys

然后从服务器复制私钥id_rsa并删除服务器上的id_rsa文件。

服务器上的设置已完成,还需要在客户端计算机上进行以下步骤。首先,我们需要将 id_rsa 文件转换为 PuTTy 支持的格式。这里我们需要用到PuTTyGEN工具:

点击PuTTyGen界面中的Load按钮,选择id_rsa文件,输入密码(如果有),然后点击Save PrivateKey按钮,这样私钥就被PuTTy接受了很清楚。

打开PuTTy,在Session中输入服务器的IP地址,点击Connection->SSH->Auth下的Browse按钮,选择刚刚生成的私钥。然后返回连接选项,在自动登录用户名中输入证书所属的用户名。返回“会话”选项卡,输入名称并单击“保存”以保存此会话。单击底部的“打开”,您应该可以通过证书身份验证登录服务器。如果有密码,登录过程中会提示输入密码,否则直接登录服务器,非常方便。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门