`

ssh密钥对的自动登录

 
阅读更多

说明: 什么是基于ssh密钥对的自动登录?

下面从整体上粗略的介绍了 RSA/DSA 密钥的工作原理。让我们从一种假想的情形开始,假定我们想用 RSA 认证允许一台本地的计算机(称作 localhost)打开 remotehost上的一个远程 shell, remotehost 是我们的 ISP 的一台机器。此刻,当我们试图用 ssh 客户程序连接到 remotehost时,我们会得到如下提示:

ssh username@remotehost
username@remotehost's password:

此处我们看到的是 ssh 处理认证的缺省方式的一个示例。换句话说,它要求我们输入 remotehost上的 username这个帐户的密码。如果我们输入我们在 remotehost 上的密码, ssh 就会用安全密码认证协议,把我们的密码传送给 remotehost 进行验证。但是,和 telnet 的情况不同,这里我们的密码是加密的,因此它不会被偷看到我们的数据连接的人截取。一旦 remotehost 把我们提供的密码同它的密码数据库相对照进行认证,成功的话,我们就会被允许登录,还会有一个 remotehost 的 shell 提示欢迎我们。虽然 ssh 缺省的认证方法相当安全,RSA 和 DSA 认证却为我们开创了一些新的潜在的机会。

但是,与 ssh 安全密码认证不同的是,RSA 认证需要一些初始配置。我们只需要执行这些初始配置步骤一次。之后, localhost 和 remotehost 之间的 RSA 认证就毫不费力了。要设置 RSA 认证,我们首先得生成一对密钥,一把专用密钥和一把公用密钥。这两把密钥有一些非常有趣的性质。公用密钥用于对消息进行加密,只有拥有专用密钥的人才能对 该消息进行解密。公用密钥只能用于 加密,而专用密钥只能用于对由匹配的公用密钥编码的消息进行 解密。RSA(和 DSA)认证协议利用密钥对的这些特殊性质进行安全认证,并且不需要在网上传输任何保密的信息。

要应用 RSA 或者 DSA 认证,我们要执行一步一次性的配置步骤。我们把 公用密钥拷贝到 remotehost。公用密钥之所以被称作是“公用的”有一个原因。因为它只能用于对那些给我们的消息进行加密,所以我们不需要太担心它会落入其它人手 中。一旦我们的公用密钥已经被拷贝到 remotehost并且为了 remotehost 的 sshd 能够定位它而把它放在一个专门的文件(~/.ssh/authorized_keys)里,我们就为使用 RSA 认证登录到 remotehost上做好了准备。

要用 RSA 登录的时候,我们只要在 localhost 的控制台键入 ssh username@remotehost ,就象我们常做的一样。可这一次, ssh 告诉 remotehost 的 sshd 它想使用 RSA 认证协议。接下来发生的事情非常有趣。 remotehost 的 sshd 会生成一个随机数,并用我们先前拷贝过去的公用密钥对这个随机数进行加密。然后, sshd 把加密了的随机数发回给正在 localhost 上运行的 ssh 。接下来,轮到我们的 ssh 用 专用密钥对这个随机数进行解密后,再把它发回给 remotehost,实际上等于在说:“瞧,我确实有匹配的专用密钥;我能成功的对您的消息进行解密!”最后, sshd 得出结论,既然我们持有匹配的专用密钥,就应当允许我们登录。因此,我们有匹配的专用密钥这一事实授权我们访问 remotehost。

配置localhost(ssh客户机)

请用您的用户账户在localhost上登录,并运行命令ssh-keygen -t rsa:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
f1:e8:ae:a7:b3:f6:64:3f:30:34:1f:c5:07:ce:0f:bc myid@localhost

连续3次回车就可以了,一般默认的输出路径就是对的
为了实现自动登录, passphrase为空。
注意:由于passphrase为空,生成的私钥必须绝对禁止未授权的访问!

将生成的id_rsa.pub文件复制到remotehost的/home/username/.ssh/目录下。

配置remotehost(ssh服务器)

请以username账户登录。运行以下命令:

cd .ssh
umask 077
cat id_rsa.pub >> authorized_keys

将id_rsa.pub的内容追加到 authorized_keys 中

测试ssh自动登录

请用您的用户账户在localhost上登录,并运行命令ssh username@remotehost。您应该能够在不输入username@remotehost口令的情况下登录到remotehost。

分享到:
评论

相关推荐

    SSH密钥登录

    首先需要在本地计算机上创建SSH密钥对。打开终端,执行以下命令: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 其中: - `-t rsa` 指定生成RSA类型的密钥; - `-b 4096` 设置密钥长度为...

    Xshell通过SSH密钥、SSH代理连接Linux服务器详解

    如果需要在没有SSH密钥对的情况下自动化连接,可以通过配置Xshell的“会话选项”来存储和自动填充密码,但这通常不推荐,因为密码明文存储增加了安全风险。 总结来说,熟练掌握SSH密钥对认证和SSH代理连接方式是IT...

    SSH密钥认证登录.doc

    在进行SSH自动登录配置时,务必检查所有涉及的目录和文件的权限,确保它们符合安全标准。使用`chmod`命令可以调整文件的权限,如`chmod 644 filename`将文件权限设置为可读可执行(rwxr--r--)。 总之,SSH密钥认证...

    SSH密钥方式登录Linux

    #### 三、生成SSH密钥对 1. **自动生成密钥对**:首先,确保服务器上的SSH服务已启动且用户能正常登录。接下来,在客户端运行SSH Secure Shell工具中的“Secure Shell Client”,通过菜单“Edit”->“Setting”进入...

    LinuxSSH使用ssh公钥密钥自动登陆linux服务器.pdf

    9. SSH 登录过程:使用公钥密钥对自动登录 Linux 服务器,提高了登录速度和安全性。 10. 安全性建议:在生成公钥密钥对时,务必输入密码短语,避免私钥丢失导致的安全问题。 通过使用 SSH 公钥密钥自动登录 Linux ...

    xshell ssh自动登录并执行命令脚本.rar

    SSH密钥对由一对公钥和私钥组成,将公钥放在服务器的`~/.ssh/authorized_keys`文件中,私钥保留在本地,这样就可以无密码登录。`sshpass`工具则可以直接在脚本中指定密码。 3. **运行脚本**:保存脚本后,在Xshell...

    centos7 ssh免密登录自动化配置脚本(ps:已测试过)

    1. **生成密钥对**:使用`ssh-keygen`命令生成一个新的密钥对,通常选择RSA算法,设置空密码以避免交互式输入。 2. **复制公钥**:使用`ssh-copy-id`命令将本地用户的公钥复制到目标服务器的`authorized_keys`文件...

    linux-远程管理SSH密钥以控制对主机的访问

    首先,SSH密钥对的生成是通过`ssh-keygen`命令完成的。执行此命令时,系统会提示您选择加密算法(通常默认为RSA或ED25519),并输入两次密码(可选,用于保护私钥)。生成的公钥通常存储在`~/.ssh/id_rsa.pub`,而...

    多台电脑共用一个ssh密钥来访问被Ansible控制机器

    2. 在141机器上,按照与142机器相同的方式生成SSH密钥对,但需要注意的是,尽管两个密钥的注释相同,但密钥的随机匹配部分是不一样的。这是因为SSH密钥对是基于随机数生成的,所以每对密钥都是独一无二的。 3. 接...

    ssh密钥创建分发(端口号非22)__脚本实现自动创建分发密钥1

    在许多场景下,特别是远程管理服务器时,SSH密钥对的使用能够替代传统的用户名和密码登录方式,提供更高的安全性。当SSH服务端口不是默认的22时,配置和管理就变得稍微复杂一些。本文将详细介绍如何在非标准端口号上...

    使用密钥对通过SSH连接树莓派

    SSH密钥对验证机制是一种非常重要的认证方式,它能够确保远程会话的安全性和便捷性。 1. **主体三方介绍** - **用户(Client)**:发起连接的一方,例如文中提到的“肥呆”。 - **终端(Client Agent)**:用户...

    LinuxSSH使用ssh公钥密钥自动登陆linux服务器收集.pdf

    **第一步:生成ssh公钥密钥对** 在管理服务器上,使用`ssh-keygen`命令生成一对rsa类型的公钥和私钥。例如: ```bash ssh-keygen -b 1024 -t rsa ``` 这里的`-b 1024`指定了密钥长度为1024位,`-t rsa`选择了RSA...

    F-Secure SSH Client密钥登录

    为了解决这个问题,F-Secure SSH Client支持使用密钥对进行身份验证,即Public Key Authentication,这种方式允许用户在不输入密码的情况下安全地登录系统。 **1. 公钥认证原理** Public Key Authentication基于非...

    服务器间通过ssh使用密钥对实现无密码登录solaris.doc

    - `ssh-keygen`: 生成SSH密钥的命令。 - `-t dsa`: 指定密钥类型为DSA(也可以选择RSA或ED25519)。 执行后会提示你保存密钥的位置以及是否设置密码短语。建议使用默认位置存储密钥,并为了安全性考虑,可以设置...

    linux下怎样设置ssh无密码登录.docx

    然后,使用 `ssh-keygen` 命令生成 SSH 密钥对: `ssh-keygen -t rsa` 连续按三次回车,将生成的密钥保存在 `.ssh/id_rsa` 文件中。 2. 配置 authorized_keys 文件 将生成的公钥 (`id_rsa.pub`) 文件追加到 `...

    for me only 1

    6. **自动化SSH**:SSH还可以配合密钥对实现自动化运维,比如通过SSH密钥对自动登录,或者通过SSH Tunnel进行安全的数据传输。 7. **SSH工具**:除了基本的`ssh`命令行工具,还有一些增强型工具,如`tmux`用于会话...

    ssh命令秘钥

    SSH密钥对包括一个公钥和一个私钥。公钥放在目标服务器的`.ssh/authorized_keys`文件中,私钥保留在本地客户端。生成密钥对的命令是`ssh-keygen`。运行这个命令时,你可以选择密钥类型(通常默认为RSA或ECDSA),并...

    WINSCP-SFTP SSH免密码登录

    **描述解析:** "WINSCP 可创建密钥交互SSH免密码登录" 表示WINSCP支持配置SSH密钥对,通过公钥认证的方式,使得用户在每次连接SFTP服务器时,不再需要手动输入私钥对应的密码,提高工作效率并增强安全性。...

    免密码自动登录SSH(免密登陆SSH)_Shell_下载.zip

    步骤一:生成SSH密钥对 在本地主机上,使用`ssh-keygen`命令生成RSA或ED25519类型的密钥对。例如: ``` ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 这会在`~/.ssh`目录下创建`id_rsa`(私钥)和`id...

    Linux服务器SSH自动登录

    ### 步骤1:生成SSH密钥对 在客户端机器上,首先需要生成一对SSH密钥,包括一个私钥(id_rsa)和一个公钥(id_rsa.pub)。这可以通过运行`ssh-keygen`命令完成: ```bash ssh-keygen -t rsa -P "" ``` -P 参数...

Global site tag (gtag.js) - Google Analytics