使用 SSH 登录有多简单!

基本原理(口语化):你要认识对方,对方也要认识你。这样就可以了!

下面所有命令都在 powershell 中运行:

  1. 认识对方

    # 输入以下命令
    $ ssh root@xx.xx.xx.xx
    The authenticity of host 'xx.xx.xx.xx' can't be established.
    ECDSA key fingerprint is SHA256:qq/xxxxxxxxxxx
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    # 初次连接云端(初次见面)时,并不认识对方,输入 yes 回车后,SSH 客户端就会自动记住对方。方法是将对方的公钥存储在 ~/.ssh/known_hosts 文件中
    

    Tip: ~ 表示当前用户文件夹,可以通过 powershell 运行 echo $env:USERPROFILEecho $HOME 来查看

  2. 让对方认识你

    $ ssh-keygen -t ECDSA
    # 生成本机的公私钥。不带 -t ECDSA 参数时默认为 RSA 算法,这里使用 ECDSA 算法,签名和加密速度相对快点。
    # 私钥通常存储在 ~/.ssh/id_ecdsa
    # 公钥通常存储在 ~/.ssh/id_ecdsa.pub
    # 如果你之前生成过公私钥,可忽略本步骤
    
    $ Get-Content $env:USERPROFILE\.ssh\id_ecdsa.pub | ssh root@xx.xx.xx.xx "cat >> .ssh/authorized_keys"
    # 运行该命令后需要先输入 root 账户的密码
    # 该命令用于将本机的公钥(id_ecdsa.pub)添加到主机的 .ssh/authorized_keys 文件中。
    

怎么样,简单吧!

以后登录,直接通过以下命令:

 $ ssh root@xx.xx.xx.xx -i $HOME\.ssh\id_ecdsa
 # -i 参数指定本机刚刚生成的私钥,以便主机验证我们的身份

2024-3-18 添加内容


或者通过 vscode 直接连接云端主机

打开 Command Palette >remote-ssh: open ssh configuration file

添加以下配置:

Host 名称
    HostName xx.xx.xx.xx
    User root
    IdentityFile ~/.ssh/id_ecdsa

然后再次打开 Command Palette >remote-sshconnecttohost

选择刚刚创建出来的“Host 名称”就可以连接了。

TIP: 为 alan 用户提供 ssh 登录

一直使用 root 用户进行操作是一个非常不好的习惯,通常我们会创建一个普通用户,然后只在有需要的时候使用 sudo 命令进行管理员操作。

# 首先我们是 root 用户

$ adduser alan
# 添加 alan 用户


$ passwd alan
# 你可以通过这个命令为 alan 用户设置密码。
# 但这里我们并不需要,因为我们要使用密钥进行登录


#
# 打开一个 split 终端,使用 alan 用户进行操作
#


$ su alan
# 从 root 切换到 alan 用户

alan$ mkdir -p ~/.ssh && touch $_/authorized_keys
# 创建一个 /home/alan/.ssh/authorized_keys 文件夹

alan$ chmod 700 ~/.ssh
# 修改 .ssh 文件夹的权限,仅限 alan 用户或 root 用户操作

alan$ chmod 600 ~/.ssh/authorized_keys
# 同上


#
# 在原先的 split 终端,使用 root 用户进行操作
#


$ cat ~/.ssh/authorized_keys > ~alan/.ssh/authorized_keys
# 将前面我们本机的公钥直接拷贝到 alan 用户的 authorized_keys 文件夹中
# 注意,这里的步骤是和前面连着的,因为前面我们已经将本地的公钥添加
# 到 /root/.ssh/authorized_keys 文件中了,而且文件中只有我们这一个公钥。
# 当然,你也可以在本机重新生成公私钥,就像前面一样,然后然后按照同样的
# 方法传递到 alan 用户的 ~alan/.ssh/authorized_keys 文件夹中。


现在,使用 ssh 登录时,更改用户名为 alan,并且指定刚刚生成的私钥即可成功登录!。

上面步骤中,切换到 alan 进行操作的目的是为了让 ~alan/.ssh 文件夹和 ~alan/authorized_keys 文件的所有者是 alan,如果你是用 root 用户操作,那么你需要通过 chown alan:alan ~alan/.ssh && chown alan:alan ~alan/.ssh/authorized_keys 命令修改所有者为 alan

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7上配置SSH免密登录可以方便我们在服务器之间进行远程操作,提高效率。下面是一个实现CentOS 7 SSH免密登录的脚本: #!/bin/bash # 定义变量,替换为实际的IP地址和用户名 IP="服务器IP地址" USERNAME="用户名" # 配置本地SSH公钥 ssh-keygen -t rsa ssh-copy-id -i ~/.ssh/id_rsa.pub $USERNAME@$IP # 修改目标服务器的SSH配置 ssh $USERNAME@$IP "sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config" ssh $USERNAME@$IP "systemctl restart sshd" 脚本中首先定义了IP地址和用户名的变量,可以根据实际情况进行修改。接着使用ssh-keygen命令生成本地的SSH公钥,并使用ssh-copy-id命令将公钥复制到目标服务器上。这样,在以后的登录过程中,就不再需要输入密码了。 最后,脚本通过SSH远程连接目标服务器,修改目标服务器的SSH配置文件,将密码登录方式改为非密码登录方式,然后重新启动SSH服务。这样,就完成了CentOS 7 SSH免密登录的配置。 使用该脚本的方法非常简单,只需要将IP地址和用户名替换为实际的值,然后使用bash命令执行脚本即可。在执行过程中,会提示输入密码和确认操作,按照提示操作即可完成配置。 需要注意的是,脚本执行过程中可能会涉及到sudo权限的问题,如果没有sudo权限,请确保已经以root用户登录。另外,脚本执行完成后,为了保证安全性,建议手动删除本地的SSH私钥(~/.ssh/id_rsa)和目标服务器上的SSH公钥(~/.ssh/authorized_keys)。 通过以上步骤,我们就可以在CentOS 7上配置SSH免密登录了,以后可以方便地进行远程操作,提高工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值