编程

centos7 设置SSH密钥登录

438 2023-08-02 18:50:00

SSH密钥提供了一种简单、安全的方式来登录服务器,建议使用。

使用后可以免输密码的登录centos7服务器。

创建 RSA 密钥对

第一步是在客户端(你管理服务器用的电脑)上创建密钥对:

ssh-keygen

然后直接enter enter enter。

windows使用cmd、powershell(推荐)

linux直接终端输入即可。

它会在你的用户目录下创建一个.ssh隐藏文件夹,里面就是配置。

将公钥复制到 CentOS7 服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@远程服务器ip

示例:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@1.1.1.1

如果你是windows系统会提示:ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

解决办法:

先在powershell里复制粘贴如下,然后再执行上面的ssh-copy-id指令

function ssh-copy-id([string]$userAtMachine, $args){   
    $publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID file '$publicKey': No such file"            
    }
    else {
        & cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

执行ssh-copy-id 后 ,输入yes继续连接。然后输入密码。

如果服务器的端口不是22,在~/.ssh下,创建一个config文件

windows创建,右键-新建-文本文档,然后改名,把.txt去除。

linux创建,nano vim vi都可以。

内容如下:示例为服务器端口是12345

Port 12345

测试连接

ssh 用户@ip

示例

ssh root@1.1.1.1

当然,你依然可以使用

ssh ip -l 用户 -p 端口

来进行连接。
 

示例:

ssh 1.1.1.1 -l root -p 22
ssh 1.1.1.1 -l root -p 12345

扩展

关闭centos7系统的密码登录

vim /etc/ssh/sshd_config

将PasswordAuthentication yes改为

PasswordAuthentication no

即可。
 

然后重启sshd服务

systemctl restart sshd