ssh远程别名免密登录配置
-
本机生成密钥对
密钥对默认存放在~/.ssh目录下(在windows里即为C:/Users/XXX/.ssh),默认为id_rsa,命令如下:
ssh-keygen -t rsa
如果想要自定义密钥对名称,可以采用-f参数
ssh-keygen -t rsa -C “your email” -f id_rsa_xx
其中“your email” 替换成你自己的邮箱;-f 后边“id_rsa_xx” 中的 xxx 就可以自定命名,例如
ssh-keygen -t rsa -C “your email” -f id_rsa_centos
-
上传公钥到服务器
首先,在远程服务器端输入
vim /etc/ssh/sshd_config
确保下面三个选项是打开的//找到下面配置,取消对应的注释 PermitRootLogin yes PubkeyAuthentication no PasswordAuthentication yes
然后输入以下命令重启远程服务器的ssh服务
systemctl restart sshd.service
上传公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.111.111.111
其中
root
服务器用户,192.111.111.111
是服务器ip。之后按照提示输入密码即可如果报错:ssh-copy-id : 无法将“ssh-copy-id”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
可以在powershell中先执行以下内容
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命令
-
接下来就可以使用ssh直接连接服务器,无需输入密码
ssh root@192.111.111.111
-
我们也可以配置远程服务器主机别名
在客户端主机下, 进入~/.ssh目录, 创建config文件, 该文件下写入以下内容
Host abc(你想取的别名) HostName ip地址(服务器端的ip地址) User abcde(服务器主机原用户名) port 22
保存并退出,之后就可以采用
ssh abc
去访问对应服务器了
如果出现类似权限无法访问的问题,试试以下解决方法,在服务器端输入
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
systemctl restart sshd.service