踏月色而来 發表於 2024-6-23 09:53:00

Ubuntu 24.04 LTS 开启 ssh 免密登录

<h2 id="参考">参考</h2>
<ul>
<li>https://zhuanlan.zhihu.com/p/146976128</li>
<li>https://www.myfreax.com/how-to-set-up-ssh-keys-on-ubuntu-20-04/</li>
<li>https://www.cnblogs.com/deepinnet/p/13663534.html</li>
<li>https://blog.csdn.net/counsellor/article/details/81182567</li>
</ul>
<h2 id="环境">环境</h2>
<table>
<thead>
<tr>
<th>环境</th>
<th>版本</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ubuntu</td>
<td>Ubuntu 24.04 LTS</td>
<td></td>
</tr>
<tr>
<td>openssh-client</td>
<td>1:9.6p1-3ubuntu13</td>
<td>dpkg -l | grep "ssh" # 查询已安装软件包版本</td>
</tr>
<tr>
<td>openssh-server</td>
<td>1:9.6p1-3ubuntu13</td>
<td>dpkg -l | grep "ssh" # 查询已安装软件包版本</td>
</tr>
</tbody>
</table>
<h2 id="正文">正文</h2>
<h4 id="服务器要登陆的机器">服务器(要登陆的机器)</h4>
<ol>
<li>安装 openssh-server<pre><code class="language-bash">sudo apt install openssh-server
</code></pre>
</li>
<li>安装完成后,SSH服务默认自动启动,你可以通过以下命令校验服务运行状态:<pre><code class="language-bash">sudo systemctl status ssh
</code></pre>
</li>
<li>如果你启用了防火墙,请确保防火墙打开了 SSH 端口,命令如下:<pre><code class="language-bash">sudo ufw allow ssh
</code></pre>
</li>
<li>允许远程登录<pre><code class="language-bash">sudo nano /etc/ssh/sshd_config
# 修改配置
PubkeyAuthentication yes
</code></pre>
</li>
<li>重启 ssh 服务<pre><code class="language-bash">service ssh restart
</code></pre>
</li>
</ol>
<h4 id="客户机本地机器">客户机(本地机器)</h4>
<ol start="7">
<li>安装 ssh 客户端<pre><code class="language-bash">sudo apt install openssh-client
</code></pre>
</li>
<li>生成密钥<pre><code class="language-bash"># 你可以不使用任何参数直接生产SSH私钥与公钥。也可以使用您的电子邮件地址作为注释来生成新的4096位SSH密钥对。
# ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
ssh-keygen
# 系统将提示您指定文件名Enter file in which to save the key (/用户名家目录/.ssh/id_rsa):。默认位置和文件名应该适合大多数用户。 按Enter接受并继续
# 接下来,系统会要求您输入安全密码或者称为密码短语Enter passphrase (empty for no passphrase):。密码短语增加了一层额外的安全性。
# 如果您设置密码短语,则每次使用该密钥登录到远程计算机时,系统都会提示您输入密码短语。如果您不想设置密码短语,请按Enter。
# 如果你没有什么特别的要求你在运行ssh-keygen命令,全部直接回车Enter键使用默认值创建SSH密钥即可。
# 要验证是否生成了新的SSH密钥对,请运行命令ls ~/.ssh/id_*查看SSH密钥是否存在。如果存在说明您已经在Ubuntu Linux计算机成功生成了SSH密钥。
</code></pre>
</li>
<li>复制到远程服务器。(或手动复制客户机的<code>~/.ssh/id_rsa.pub</code>追加到到远程服务器的<code>~/.ssh/authorized_keys</code>)<pre><code class="language-bash"># server_username是远程服务器用户的名称,server_ip_address是你的服务器IP地址。系统将提示您输入远程用户密码。
# 通过身份验证后,公钥 ~/.ssh/id_rsa.pub 将追加到远程用户 ~/.ssh/authorized_keys 文件中,然后ssh-copy-id将会退出。
ssh-copy-id server_username@server_ip_address
</code></pre>
</li>
</ol>
<h4 id="验证">验证</h4>
<ol start="10">
<li>输入远程机器用户名与ip即可免密登录。<pre><code class="language-bash">ssh remote_username@server_ip_address
</code></pre>
</li>
</ol>
<h4 id="额外">额外</h4>
<ol start="11">
<li>禁用SSH密码身份验证。(<strong>可选</strong>)<br>
禁用密码身份验证会为服务器增加一层安全保护。在禁用SSH密码身份验证之前,请确保您可以免密码登录服务器,并且你登录用户具sudo权限。<br>
完成后,保存文件并运行命令sudo systemctl restart ssh重新启动SSH服务。此时,基于密码的身份验证已被禁用,你将不能使用密码登录。<br>
注意:禁用密码登录后,请保管好你的SSH密钥文件,如果VPS提供商提供VNC远程控制可以很容易恢复,如果没有就........。<pre><code class="language-bash"># 登录到远程服务器
ssh sudo_user@server_ip_address
# 远程服务器执行修改配置
sudo nano /etc/ssh/sshd_config
</code></pre>
<pre><code class="language-config"># 修改下面几行
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
</code></pre>
<pre><code class="language-bash"># 服务器端重启ssh生效配置
sudo systemctl restart ssh #在你的服务器上
</code></pre>
</li>
</ol>


</div>
<div id="MySignature" role="contentinfo">
      
<div>
    博主 :夏秋初<br />
    地址 :https://www.cnblogs.com/xiaqiuchu/p/18263107 <br /> <br />

    如果对你有帮助,可以点一下
    <span style="color:#ff5722;cursor: pointer;" onclick="(()=>{$('#green_channel_follow').click()})() "> 推荐 </span>
    或者
    <span style="color:#ff5722;cursor: pointer;"onclick="(()=>{$('#div_digg .diggit').click()})() "> 关注 </span>
    吗?会让我的分享变得更有动力~<br />
    转载时请带上原文链接,谢谢。<br />

</div><br><br>
来源:https://www.cnblogs.com/xiaqiuchu/p/18263107
頁: [1]
查看完整版本: Ubuntu 24.04 LTS 开启 ssh 免密登录