本文基于S:Lentos release 7.2&C:MacOS 进行的学习记录,初衷是解决多个服务器总要找IP地址和不同服务器有多个不同密码的问题,没想到这么一个简单的问题却弄了小半天。
生成的文件默认保存在~/.ssh/目录下,一般会用到下面三个命令:
执行完成后生成两个文件tes和test.pub
user@client:.ssh cat test test.pub
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
***************************************
qtufyLXIB2Ej6Nu05QAAABjov5nmmK/kuIDkuKrmtYvor5Xlr4bpkqUB
-----END OPENSSH PRIVATE KEY----- ⬆️以上是test内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB******B9pxGFIXoZFWJmGPNmYT/rlXV 这是一个测试密钥 --------这里是公钥内容
语法:ssh-copy-id [-i [identity_file]] [user@]machine
-i:指定公钥文件
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
user@server:ssh -i ~/.ssh/test user@server
sudo vi /etc/ssh/sshd_config
#是否启用root用户登录
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 是否允许密码授权登录
PasswordAuthentication nosystemctl restart sshd.service
或者
service sshd restart到这里基本就可以实现使用密钥进行无密码登录了,但是使用别名登录的过程中碰到了权限没问题的情况下一直提示让输入密码的问题。找到了两个解决办法,首先说一下设置ssh别名使用的问题,并且在/etc/log/secure 里一直得到 Connection closed by xxx preauth的提示1.Host server
2. HostName 127.0.0.1 ##登录主机名或者IP地址
3. Port 22 ##指定端口号
4. User root ##登录用户名
5. IdentityFile ~/.ssh/test.pub ##登录公钥
6. IdentitiesOnly yes ##只接受key登录
Host server2
HostName 192.168.1.2
User User这样之后就可以用 ssh server 这样的命令进行登录了,但是我在设置完成之后(我的config中没有写4&5),而且我配置的是两台服务器,在server可以使用别名无密码登录的情况下,server2却一直提示让输入密码。网上找半天也没找到原因,后来在不断尝试下找到两个解决办法
1. 在config文件中指定IdentityFile
2. 用ssh-add添加密钥到ssh-agent中
ssh-add ~/.ssh/私钥
不明所以,但是以上两个方法解决了我的使用问题。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。