前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux设置SSH密钥以及别名无密码登录

Linux设置SSH密钥以及别名无密码登录

原创
作者头像
用户1774772
修改2019-02-18 11:41:39
5.2K0
修改2019-02-18 11:41:39
举报
文章被收录于专栏:学还是不学

Linux设置SSH密钥以及别名无密码登录

代码语言:txt
复制
    本文基于S:Lentos release 7.2&C:MacOS 进行的学习记录,初衷是解决多个服务器总要找IP地址和不同服务器有多个不同密码的问题,没想到这么一个简单的问题却弄了小半天。

首先生成使用密钥对

使用ssh-keygen生成密钥对

生成的文件默认保存在~/.ssh/目录下,一般会用到下面三个命令:

  • -t 指定密钥类型,支持“dsa”,”ecdsa”,”ed25519”,”rsa”,默认类型为“rsa”user@client:.ssh ssh-keygen -f test -C 这是一个测试密钥 Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in test. Your public key has been saved in test.pub. The key fingerprint is: SHA256:V4oFwHjA96nOPz9YKWxB4IMuJALPyxZLadZUpDy5Ykg 这是一个测试密钥 The key's randomart image is: +---[RSA 2048]----+ |. .o*=o. | |.o =o=+ .. | |oEX Booo .. . | |oO = o .+o o | |. O o oS.o. | | o o . +.o | | o . + | | o o . | | ..o.. | +----[SHA256]-----+
  • -f filename 指定生成密钥文件的名字 ,公钥filename.pub ,私钥filename
  • -C 对密钥进行补充说明 ,在filename.pub内容末尾处 执行一下命令后,会提示是否对密钥使用密码,如果为了方便可以直接回车,自己的电脑为共享环境建议使用密码

执行完成后生成两个文件tes和test.pub

代码语言:txt
复制
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将本地的公钥复制到远程主机上的authorized_keys的文件上,并对remote 主机的用户的~/.ssh和~/.ssh/authorized_keys文件设置合适的权限

代码语言:txt
复制
语法:ssh-copy-id [-i [identity_file]] [user@]machine
-i:指定公钥文件
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

然后就可以使用ssh调用私钥进行登录Server端

代码语言:txt
复制
	user@server:ssh -i ~/.ssh/test user@server

如果仍需要密码来进行登录,首先确定权限的问题

  • 打开sshd_config文件 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/私钥 不明所以,但是以上两个方法解决了我的使用问题。
  • 修改以下参数配置
  • 重启sshd服务
  • 首先设置一下别名

我的无用域名

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux设置SSH密钥以及别名无密码登录
    • 首先生成使用密钥对
      • 使用ssh-keygen生成密钥对
      • 使用ssh-copy-id将本地的公钥复制到远程主机上的authorized_keys的文件上,并对remote 主机的用户的~/.ssh和~/.ssh/authorized_keys文件设置合适的权限
      • 然后就可以使用ssh调用私钥进行登录Server端
      • 如果仍需要密码来进行登录,首先确定权限的问题
  • 我的无用域名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档