`
Lewis·Lee
  • 浏览: 66236 次
  • 性别: Icon_minigender_1
  • 来自: 台州
社区版块
存档分类
最新评论

在 Windows XP 上使用 OpenSSH 和 PuTTY 的公钥认证远程管理 Unubtu Server 10.04 LTS——上

阅读更多

注意 :代码中的 # 只表示注释作用,该内容不能输入到命令行窗口中

 

      远程管理 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

    OpenSSH、PuTTYgen 和 PuTTY 是在 IT 领域中进行远程连接和网络管理的重要工具,尤其在Linux和Windows系统之间进行交互时。以下是关于这些工具的详细知识点: **OpenSSH** OpenSSH(Open Source Secure SHell)是...

    openssh-server离线安装包

    OpenSSH Server离线安装包包含了在Linux系统上部署和配置安全Shell(SSH)服务所需的所有文件。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令和其他管理任务,而无需明文传输密码。在Ubuntu这样的Linux...

    Ubuntu下openssh-server手工安装 手把手教你安装

    在Ubuntu上配置OpenSSH服务器是实现远程访问和管理的关键步骤。OpenSSH是Secure Shell的开放源码版本,提供加密的网络通信服务,包括安全的远程登录功能。在没有网络的情况下,我们可以通过手动安装的方式来设置...

    OpenEuler22.03 LTS 升级openssh9.6p1解决openssh中高危漏洞(亲测有效)

    在OpenEuler 22.03 LTS操作系统中,安全是至关重要的,特别是对于网络服务而言,OpenSSH作为远程登录和文件传输的标准工具,其安全性直接影响到系统的整体安全状况。最近,OpenSSH曝出了一些高危漏洞,这些漏洞可能...

    openssh_for_windows

    在本文中,我们将详细探讨如何在Windows上安装和使用OpenSSH,以及针对提供的文件列表,了解各个版本的差异和安装方法。 OpenSSH 的主要组件包括 SSH 客户端和 SSH 服务器,它们共同提供了一个安全的环境,使得用户...

    windows安装openssh-server安装包

    在Windows操作系统上安装OpenSSH Server是一项实用的任务,它允许用户通过SSH协议在Windows与其它支持SSH的设备之间进行安全的远程连接。OpenSSH是开源软件,通常在Linux系统中使用,但通过一些调整,也可以在...

    Git Windows XP服务器搭建

    Git Windows XP服务器搭建涉及的关键技术主要包括Git版本控制系统、Windows XP上的SSH服务器配置、公钥-私钥认证以及客户端工具的使用。以下是对这些知识点的详细解释: 1. **Git**:Git是一款分布式版本控制系统,...

    putty【连接远程Unix服务器】

    PuTTY是一个广泛使用的开源应用程序,主要用于在Windows操作系统上建立对远程服务器的SSH(Secure Shell)连接。它允许用户通过命令行界面与Linux或Unix服务器进行交互,提供了安全的数据传输和远程登录功能。PuTTY...

    openssh-server-9.4

    总结,openssh-server-9.4在安全性、性能和易用性方面均有显著提升,但同时也需要管理员进行合理的配置和维护,以确保系统的安全稳定运行。了解和掌握这些知识点,对于任何涉及远程访问的IT专业人员来说都至关重要。

    windows 下openssh服务安装包

    6. **测试连接**:在另一台设备上,使用SSH客户端(如PuTTY)尝试连接到已安装OpenSSH服务的Windows机器。格式通常是`ssh 用户名@主机IP`,如果一切正常,你应该能够成功登录。 7. **安全考虑**:默认的安全设置...

    OpenSSH-Win64.zip

    OpenSSH-Win64是一款专为Windows平台设计的开源SSH(Secure Shell)工具,它使得在Windows系统上能够实现安全的远程登录和其他网络服务。SSH是一种网络协议,用于加密网络通信,确保数据传输的安全性,避免了传统的...

    Ubuntu离线安装openssh-server安装包

    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-...

    openssh-server -Ubuntu18.04远程服务离线安装包

    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

    公钥认证是一种常见的安全机制,它涉及一对密钥——公钥和私钥。公钥存储在服务器上,私钥保留在客户端,只有当私钥正确匹配时,才能建立连接。 **SSH客户端**,如Putty,是一个图形化界面的应用程序,允许用户通过...

    Windows下Openssh的安装.pdf

    Windows 下 Openssh 的安装是指在 Windows 操作系统中安装和配置 Openssh 客户端和服务器端,以便在 Windows 平台上使用 SSH 协议连接远程服务器或进行远程管理。下面是 Openssh 在 Windows 平台下的安装和配置步骤...

    Openssh工具远程管理

    本篇文章主要围绕在Solaris 10环境下如何配置和使用OpenSSH进行远程管理,包括基本概念、安装配置以及具体应用等多方面内容。 #### 二、OpenSSH在Solaris 10中的配置与使用 ##### 2.1 Solaris 10中OpenSSH的基础...

    OpenSSH for Windows

    SSH是一种网络协议,用于加密网络连接,确保数据传输的安全性,尤其在管理远程服务器时非常常见。 在Windows上安装OpenSSH,通常需要依赖于特定的库和组件,比如Cygwin,这是一个提供Linux-like环境的工具集,使得...

    openssh for windows--setupssh-7.9p1-1

    在命令行中输入`services.msc`打开服务管理器,找到"OpenSSH Authentication Agent"和"OpenSSH Server"两项服务,确保它们的状态为"已启动"。 2. 配置文件:OpenSSH的主要配置文件位于`C:\ProgramData\OpenSSH\sshd...

    putty远程连接ubuntu

    因此,在使用Putty远程连接之前,首先需要在Ubuntu上安装并配置OpenSSH服务端。 #### 1. 安装OpenSSH服务端 可以通过运行以下命令来安装OpenSSH服务端: ```bash sudo apt-get install openssh-server ``` 该...

    操作openssh

    **操作OpenSSH** OpenSSH是SSH(Secure SHell...了解和熟练使用这些工具对于IT专业人员来说至关重要,特别是在管理远程服务器、自动化运维和数据传输时。掌握OpenSSH和Putty不仅可以提高工作效率,还能确保网络安全。

Global site tag (gtag.js) - Google Analytics