专栏首页学还是不学Linux设置SSH密钥以及别名无密码登录
原创

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

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

    本文基于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

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文件设置合适的权限

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

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

	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服务
  • 首先设置一下别名

我的无用域名

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 十分重要——树莓派3B+重装系统详细步骤

    上周日买的树莓派3B+,兴致冲冲的安装系统,我是用ssh+VNC的方式。但是第一次安装的“2018-11-13-raspbian-stretch-lite.im...

    小火柴棒
  • gitHub使用记录

    之前一直用的都是Bitbucket,虽然gitHub很早就开通了,但是一直没有用它,今天算是第一次用吧。在配置上遇到了一些问题,在这里记录下来和大家一起分享。

    明天依旧可好
  • 域名解析及连接服务器的相关问题

    星辉
  • git生成sshkey

    默认情况下,公钥的文件名是以下之一: id_dsa.pub id_ecdsa.pub id_ed25519.pub

    IT云清
  • git push 每次都需要输入用户名和密码

    IT云清
  • java使用telnet连接交换机并管理交换机

    像crt或者ssh、甚至是cmd命令中使用window的telnet命令连接交换机。都可以起到控制交换机的作用。 teln...

    业余草
  • CentOS7 安装和配置 ssh

    星辉
  • windows端使用ssh和Xming远程连接ubuntu端调试ROS

    -------------------------------------------------------------------------

    zhangrelay
  • Ubuntu下开启SSH服务

    在VMware WorkStation下,安装了Ubuntu,然后在Windows桌面使用XManager的XShell连接我的Ubuntu,可是同时提示连接失...

    TheOneGIS
  • git bash的安装和配置教程

    分布式 : Git版本控制系统是一个分布式的系统, 是用来保存工程源代码历史状态的命令行工具;

    业余草

扫码关注云+社区

领取腾讯云代金券