📜  没有密码的 ssh 登录 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:40:43.453000             🧑  作者: Mango

没有密码的 ssh 登录

在传统的 ssh 登录方式下,每次登录都需要输入用户名和密码,但是对于频繁登录的程序员来说,这显得很繁琐。所以,我们可以通过添加公钥的方式,实现无密码登录。

生成 ssh 公钥

首先,在本地计算机上生成 ssh 公钥。使用以下命令生成 ssh 公钥:

ssh-keygen -t rsa

这个命令将在用户主目录的 .ssh 目录下生成 id_rsaid_rsa.pub 两个文件。其中,id_rsa 是私钥,必须妥善保管,而 id_rsa.pub 是公钥,需要复制到远程服务器上。

将公钥添加到远程服务器

将生成的公钥 id_rsa.pub 复制到要登录的远程服务器上。具体步骤如下:

  1. 使用以下命令将公钥复制到远程服务器上(假设服务器 IP 地址为 your_server_ip_address,用户名为 your_username):
ssh-copy-id your_username@your_server_ip_address
  1. 如果无法使用 ssh-copy-id 命令,可以手动将公钥复制到远程服务器上,具体步骤如下:

    a. 在本地使用以下命令查看公钥:

    cat ~/.ssh/id_rsa.pub
    

    b. 将公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中(如果文件不存在,则需要自行创建)。

    # 将本地公钥添加到远程服务器 authorized_keys 文件中
    ssh your_username@your_server_ip_address "mkdir -p ~/.ssh && echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"
    

    c. 最后,通过以下命令重启 ssh 服务:

    # Ubuntu 系统
    sudo systemctl restart sshd
    
    # CentOS 系统
    sudo systemctl restart sshd.service
    
无密码登录

完成上述步骤后,下次登录远程服务器时,将不再需要输入密码。只需要使用以下命令即可登录:

ssh your_username@your_server_ip_address

注意,如果生成 rsa 的时候设置了密码,则每次登录都需要输入一次密码。