注意
:代码中的 # 只表示注释作用,该内容不能输入到命令行窗口中
远程管理 Ubuntu,可以通过很多方式,这里只介绍 SSH。通过 SSH
可以远程登录到服务器上,让你觉得好像就在服务器面前工作一样。我们使用的 SSH 是 OpenSSH
,它是由两个小组开发的,其中 OpenBSD
为该项目做了杰出贡献。通过 OpenSSH,我们不仅可以远程使用命令行,还可以远程运行 X Window
图像程序,安全地传输文件。我们甚至还可以用 OpenSSH 的端口映射功能为其它协议做管道,来通过防火墙或者不可信任的网络。
OpenSSH 的安全性非常高,如果你目前仍在使用
telnet、rlogin、ftp 这些非常不安全的工具(它们传输密码时使用明文,导致密码很容易被窃取),希望你能尽快转移到 SSH
上来,已减少网络安全隐患。
关于公钥认证
为什么要用公钥认证
如果你的 SSH 服务器是放在 Internet 上的,那么 Hiweed
强烈建议你不要使用密码登录。因为总有些像搞破坏的人,使用各种各样的方法,希望能够得到你的用户名和密码,然后做一些乱七八糟的事情。
请你千万不要不以为然。你可以查看系统认证日志文件,该文件位于/var/log/auth.log
。使用 tail 查看文件的最后几行(-n 的默认值为 10,即十行)。使用 -f 开关,可以输出该文件新增的数据。具体参数配置可以使用
tail --help 命令。
$ cd /var/log
$ tail -f auth.log
其轮转(rotate)后的日志文件为 /var/log/auth.log.0
等。使用 grep 过滤出 SSH 的认证信息:
$ grep failed auth.log.0
你很有可能会看到非常多的认证失败信息:
Jul 1 21:18:44 lee sshd[2273]: error: key_read: key_from_blob AAAAB3NzaC1yc2EAAAABJQAAAIEAql2+PY8ZDVK+RVLUCzteXHyz8qFoC/fNlUOw fjRVUuVoytgjpqyHWM7vSxkBO90B6f8mPL8jxhWBGqXMv2hQKsJrHDf4m9ILIrDN/pGt/HnZ/JQZkLOnxddWdXCLbDMESrU8D3a9SMSkEbmL5RgJ+NIv6DbrlTElT7lm ESAM5Ns= lee's key\n failed
Jul 1 21:26:13 lee sshd[2560]: error: key_read: uudecode AAAAB3NzaC1yc2EAAAABJQAAAIEAql2+PY8ZDVK+RVLUCzteXHyz8qFoC/fNlUOwfjRVUuVoytgjpqyHWM7vSxkBO90B6f8mPL8jxhWBGqXMv2hQKsJrHDf4m9ILIrDN/pGt/HnZ/JQZkLOnxddWdXCLbDMESrU8D3a9SMSkEbmL5RgJ+NIv6DbrlTElT7lmESAM5Ns== lee's key\n failed
尤其是那些在时间上很连续的登录尝试,一看就知道是暴力破解。
既然密码登录方式这么不安全,那么使用什么方式登录呢?使用公钥
。
公钥认证是怎么工作的
“公钥”是从 Public Key 翻译过来的,和“私钥”(Private
Key)相对应。公钥和私钥都是一个很长的字符串(一个非常大的随机数)。公钥放在服务器上,私钥放在你的客户机上;当你从客户机连接服务器时,如果你的
私钥能够和公钥对上号,就可以通过认证。
简单地说,公钥就好像一把锁,把服务器锁住;私钥就好像一把钥匙,只有钥匙对了,才能打开那把锁。没有钥匙,别指望打开它。
因为大多数 SSH
程序保持私钥时都使用密码加密保护。所以,即便你的电脑丢失,私钥被人拿到,你也有足够的时间来创建新的公钥和私钥,并将服务器上的旧公钥替换掉。
SSH 的安装
Ubuntu 提供了一个 meta 软件包,名为 ssh。它依赖
openssh-server 和 openssh-client。使用 apt-cache 显示软件包的依赖关系,从而验证我们刚才所说的是否正确:
$ apt-cache show ssh
...
Depends: openssh-client, openssh-server
...
如果你的机器上既需要 SSH Server 又需要 SSH
Client,可以直接安装 ssh 软件包;否则,就可以分开来安装。
安装 SSH 服务器和客户端
如果你的服务器上只需用 SSH Server的话,则安装
openssh-server 软件包即可。使用 dpkg -l 查看软件包 openssh-server 是否已安装。如没,则输入安装命令。
# 确认 openssh-server 是否已安装
$ dpkg -l openssh-server
# 如没,则输入安装命令
$ sudo apt-get install openssh-server
这样,OpenSSH 服务器就安装好了。提供 SSH 服务的程序叫做
sshd,其配置文件是/etc/ssh/sshd_config
。在默认情况下,SSH 服务跑在 TCP 的22端口。为了安全起见,你可以把这个端口号改成别的,比如2323。使用 sudo nano
修改端口号:
$ sudo nano /etc/ssh/sshd_config
# 将 Port 22 改为 Port 2323,然后按 Ctrl+o,最后按 Ctrl+x。这样就修改完成
# 重新启动系统才能生效
$ sudo reboot
如果是在客户端上,我们只需要安装 SSH Client,那么安装
openssh-client 软件包即可:
$ sudo apt-get install openssh-client
这样,OpenSSH 客户端就安装好了。它携带了一些其他 SSH 工具,比如
ssh-keygen 可以用来生成公钥/私钥对,scp 可以用来通过 SSH 远程复制文件,sftp 可以实现安全 FTP 传输,等等。
测试
安装好后,马上就可以在服务器上测试一下:
$ ssh localhost -p 2323
正常情况下,SSH 会邀请你输入密码,通过认证后,便登录成功,你就进入了基于
SSH 新的命令行了。要退出也很简单,使用 Ctrl+d 或 exit 命令即可。
SSH 配置
首先,我们需要生成一对公钥/私钥。
在 Linux 客户机上,运行 ssh-keygen 命令(请确认你安装了
openssh-client 软件包):
上面命令行输入的 rsa 代表 rsa for protocol
version 2。有关参数选项的含义,建议参考 OpenSSH 用户手册——ssk-keygen
。
这样,密钥对就生成了。公钥是~/.ssh/id_rsa.pub,私钥是~/.ssh/id_rsa。
将公钥复制到服务器
生成公钥后,我们还需要将它复制到服务器上。
你可以使用 scp 进行远程 copy,但是 OpenSSH
提供了一个更好的工具叫做
ssh-copy-id
(QuickTip: Make life easier with ssh-copy-id
),
专门用于密钥的复制
。它可以更安全地帮助我们上传公钥,并自动把公钥写入 SSH 服务器上的 ~/.ssh/authorized_keys
(如果~/.ssh目录不存在的话,它会自动创建)。
$ ssh-copy-id -i .ssh/id_rsa.pub lewis@192.168.1.199
如果想查 authorized_keys 文件的获取权限是不是
-wr------ ?可以使用 ls -l 命令查看文件的权限:
$ cd .ssh
$ ls -l
SSH 登录测试
复制后,我们来测试一下,看看使用刚才创建的密钥对能不能登录。
1. 从 Linux 登录
从 Linux 客户机上登录 SSH 服务器很简单:
$ ssh lewis@192.168.1.199
输入密钥密码后,应该就可以登录成功了。如果你在创建 key
时没有输入密码,则登录时也不需要使用密码,直接就能登录成功(可以用在 shell 脚本中实现自动维护任务)。
如果你的 .ssh 目录下有多个 key,则可以使用 -i 来指定 key
文件:
$ ssh -i .ssh/id_rsa lewis@192.168.1.199
2. 用 PuTTY 登录
在 Windows 上用 PuTTY 登录的话,我们的私钥必须用
PuTTYgen 转换一下格式。在 PuTTYgen 的 File 菜单上,选择“Load private key” 或
直接单击“load”按钮(如图 20.1 所示)。
图 20.1 在 PuTTYgen 上加载私钥
如果你的私钥有密码,PuTTYgen 会要求你输入密码,如图 20.2
所示。
图 20.2 输入私钥的密码
输入正确的密码后,会显示导入成功。并提示说,“Save private
key”将私钥保存为 PuTTY 自己的 key 格式,如图 20.3 所示。
图 20.3 私钥导入成功
现在,在 PuTTYgen 的界面上,你可以修改 key 的备注(Key
comment),然后单击“Save private key”按钮,将私钥保存(如图 20.4 所示)。
图 20.4 修改备注并保存
-
Run the Putty client (PuTTY.exe) to specify the
saved private key and auto-login username before initiating connection
to lewis.
现在,在 PuTTY 中的“Connection -> SSH
-> Auth”配置界面中,指定 key 的路径即可,如图 20.5 所示。
图 20.5 在 PuTTY 中加载私钥
Graph 20.6
Specify the login user ID
SSH服务器配置
在 SSH 服务器上,我们要禁止使用密码登录,仅允许使用密钥登录。
先备份/etc/ssh/sshd_config,然后修改它:
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config-backup
$ sudo nano /etc/ssh/sshd_config
找到下面几行内容:
PermitRootLogin yes
#PasswordAuthentication yes
UsePAM yes
将 yes 全部改为 no:
# 不允许使用 root 账号登录系统
PermitRootLogin no
# 密码登录权限失效
PasswordAuthentication no
UsePAM no
文件保存后,重新启动 SSH 服务:
$ sudo /etc/init.d/ssh restart
好,SSH 服务器的配置就完成了。现在开始,SSH
服务器将不再接受密码登录方式,只有使用私钥 key 才能登录。
下一篇:使用 PuTTYgen 在 Windows XP 上生成密钥对以及 SSH 的远程复制文件功能——中
- 大小: 7.4 KB
- 大小: 17.6 KB
- 大小: 5.8 KB
- 大小: 8.8 KB
- 大小: 24.9 KB
- 大小: 22.8 KB
- 大小: 18 KB
分享到:
相关推荐
OpenSSH、PuTTYgen 和 PuTTY 是在 IT 领域中进行远程连接和网络管理的重要工具,尤其在Linux和Windows系统之间进行交互时。以下是关于这些工具的详细知识点: **OpenSSH** OpenSSH(Open Source Secure SHell)是...
OpenSSH Server离线安装包包含了在Linux系统上部署和配置安全Shell(SSH)服务所需的所有文件。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令和其他管理任务,而无需明文传输密码。在Ubuntu这样的Linux...
在Ubuntu上配置OpenSSH服务器是实现远程访问和管理的关键步骤。OpenSSH是Secure Shell的开放源码版本,提供加密的网络通信服务,包括安全的远程登录功能。在没有网络的情况下,我们可以通过手动安装的方式来设置...
在OpenEuler 22.03 LTS操作系统中,安全是至关重要的,特别是对于网络服务而言,OpenSSH作为远程登录和文件传输的标准工具,其安全性直接影响到系统的整体安全状况。最近,OpenSSH曝出了一些高危漏洞,这些漏洞可能...
在本文中,我们将详细探讨如何在Windows上安装和使用OpenSSH,以及针对提供的文件列表,了解各个版本的差异和安装方法。 OpenSSH 的主要组件包括 SSH 客户端和 SSH 服务器,它们共同提供了一个安全的环境,使得用户...
在Windows操作系统上安装OpenSSH Server是一项实用的任务,它允许用户通过SSH协议在Windows与其它支持SSH的设备之间进行安全的远程连接。OpenSSH是开源软件,通常在Linux系统中使用,但通过一些调整,也可以在...
Git Windows XP服务器搭建涉及的关键技术主要包括Git版本控制系统、Windows XP上的SSH服务器配置、公钥-私钥认证以及客户端工具的使用。以下是对这些知识点的详细解释: 1. **Git**:Git是一款分布式版本控制系统,...
PuTTY是一个广泛使用的开源应用程序,主要用于在Windows操作系统上建立对远程服务器的SSH(Secure Shell)连接。它允许用户通过命令行界面与Linux或Unix服务器进行交互,提供了安全的数据传输和远程登录功能。PuTTY...
总结,openssh-server-9.4在安全性、性能和易用性方面均有显著提升,但同时也需要管理员进行合理的配置和维护,以确保系统的安全稳定运行。了解和掌握这些知识点,对于任何涉及远程访问的IT专业人员来说都至关重要。
6. **测试连接**:在另一台设备上,使用SSH客户端(如PuTTY)尝试连接到已安装OpenSSH服务的Windows机器。格式通常是`ssh 用户名@主机IP`,如果一切正常,你应该能够成功登录。 7. **安全考虑**:默认的安全设置...
OpenSSH-Win64是一款专为Windows平台设计的开源SSH(Secure Shell)工具,它使得在Windows系统上能够实现安全的远程登录和其他网络服务。SSH是一种网络协议,用于加密网络通信,确保数据传输的安全性,避免了传统的...
Ubuntu20.04和Ubuntu16.04等其他Ubuntu离线安装openssh-server 安装步骤: sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb sudo dpkg -i openssh-client_8.4p1-6ubuntu1_amd64.deb sudo dpkg -i openssh-...
sudo dpkg -i openssh-sftp-server_1%3a7.6p1-4ubuntu0.6_amd64.deb sudo dpkg -i openssh-server_1%3a7.6p1-4ubuntu0.6_amd64.deb sudo dpkg -i ssh-import-id_5.7-0ubuntu1.1_all.deb 修改 /etc/ssh/sshd_config...
公钥认证是一种常见的安全机制,它涉及一对密钥——公钥和私钥。公钥存储在服务器上,私钥保留在客户端,只有当私钥正确匹配时,才能建立连接。 **SSH客户端**,如Putty,是一个图形化界面的应用程序,允许用户通过...
Windows 下 Openssh 的安装是指在 Windows 操作系统中安装和配置 Openssh 客户端和服务器端,以便在 Windows 平台上使用 SSH 协议连接远程服务器或进行远程管理。下面是 Openssh 在 Windows 平台下的安装和配置步骤...
本篇文章主要围绕在Solaris 10环境下如何配置和使用OpenSSH进行远程管理,包括基本概念、安装配置以及具体应用等多方面内容。 #### 二、OpenSSH在Solaris 10中的配置与使用 ##### 2.1 Solaris 10中OpenSSH的基础...
SSH是一种网络协议,用于加密网络连接,确保数据传输的安全性,尤其在管理远程服务器时非常常见。 在Windows上安装OpenSSH,通常需要依赖于特定的库和组件,比如Cygwin,这是一个提供Linux-like环境的工具集,使得...
在命令行中输入`services.msc`打开服务管理器,找到"OpenSSH Authentication Agent"和"OpenSSH Server"两项服务,确保它们的状态为"已启动"。 2. 配置文件:OpenSSH的主要配置文件位于`C:\ProgramData\OpenSSH\sshd...
因此,在使用Putty远程连接之前,首先需要在Ubuntu上安装并配置OpenSSH服务端。 #### 1. 安装OpenSSH服务端 可以通过运行以下命令来安装OpenSSH服务端: ```bash sudo apt-get install openssh-server ``` 该...
**操作OpenSSH** OpenSSH是SSH(Secure SHell...了解和熟练使用这些工具对于IT专业人员来说至关重要,特别是在管理远程服务器、自动化运维和数据传输时。掌握OpenSSH和Putty不仅可以提高工作效率,还能确保网络安全。