centos7 设置SSH密钥登录
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