ssh免密登录linux服务器
Ssh免密登录
sshd服务
sshd简介:
SSH 密钥为登录 Linux 服务器提供了更好且安全的机制。运行 ssh-keygen 后,将会生成公私密钥对。你可以将公钥放置到任意服务器,从持有私钥的客户端连接到服务器的时,会用它来解锁。两者匹配时,系统无需密码就能解除锁定。
官方维护文档:https://www.ssh.com/ssh/
参考文档:https://www.cnblogs.com/ioveNature/p/7919115.html
https://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html
一、服务器上创建用户:
在服务器上创建普通用户,为每个人都分配一个自己的用户。
# groupadd dd# useradd -g dd dd1[root@localhost ~]# passwd dd1Changing password for user dd1.New password:BAD PASSWORD: The password is shorter than 7 charactersRetype new password:passwd: all authentication tokens updated successfully.
# 这个密码管理员管理好,不用给其他人。稍后,用户是通过他们的公钥+口令登录的。不需要知道服务器用户的密码。
二、windows上生成密钥免密连接服务器:
Xshell配置免密登录:
参考:
https://www.cnblogs.com/ioveNature/p/7919115.html
秘钥生成
生成公钥
工具 -> 新建用户秘钥生成向导 ->
下一步 ->
点击下一步,输入密码:
点击下一步
点击保存为文件,完成。
生成私钥
工具 -> 用户秘钥管理者
选中秘钥类型 -> 导出
保存,输入之前设置的秘钥保护密码,生成私钥
至此,生成了一对 公钥-私钥 对。
在服务器上添加公钥权限
- 上传公钥到服务器的/root/.ssh目录下
- 执行命令cat id_rsa_2048.pub >> authorized_keys 与 chmod 600 authorized_keys
- 然后执行 cat authorized_keys即可看到公钥内容已经添加到文件中去了。
在XShell中登录
- 文件-> 新建
名称没有太大限制。随意填写,这里填写的是rsa-test。
接着填写主机的IP地址,也就是所要连接的服务器的IP地址。
- 填写 用户身份验证 信息
这里的密码为前面所设置的秘钥的保密码,用户名为服务器的账号用户名。
在多终端的XShell上进行登录
如果在另外一台电脑上连接这个服务器账号,则除了前面一步的配置之外,还需要手动添加私钥。具体方法为:
工具-> 用户秘钥管理者
选择 导入,然后选择私钥之后选择打开即可正常连接。
备注
如果是服务器管理员,上面有多个用户账号,则需要为每一个用户进行添加权限,这时候除了前面的公钥信息之外,还要绑定用户名。
参考
- Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录
Securecry上配置免密登录:
参考:https://blog.csdn.net/wangquannetwork/article/details/46062675
三、linux上生成密钥对免密连接服务器:
1、切换成对应的用户
# su dd
2、使用ssh-keygen生成key,注释可以加邮件,
[dd@localhost ~]$ ssh-keygen -t rsa -C "php key"Generating public/private rsa key pair.Enter file in which to save the key (/home/dd/.ssh/id_rsa): # 要求输入密钥保存位置Enter passphrase (empty for no passphrase): # 输入密钥口令Enter same passphrase again: # 确认密钥口令Your identification has been saved in /home/dd/.ssh/id_rsa.Your public key has been saved in /home/dd/.ssh/id_rsa.pub.The key fingerprint is:cc:67:bb:e7:44:e4:f0:f9:d3:c3:20:98:bd:55:f1:35 php keyThe key's randomart image is:+--[ RSA 2048]----+| E.|| =|| . . ..|| o += .. || Sooo=o || o o+.o. || ... oo.|| o. ..|| .o. |+-----------------+[dd@localhost ~]$ ls /home/dd/.ssh/ -a. .. authorized_keys id_rsa id_rsa.pub
3、使用ssh-copy-id把本机的公钥文件发送到目标服务器192.168.188.129上。
[dd@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa dd1@192.168.188.129/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysdd1@192.168.188.129's password: #要求输入对方主机dd1的密码Number of key(s) added: 1Now try logging into the machine, with: "ssh 'dd1@192.168.188.129'"and check to make sure that only the key(s) you wanted were added.
注意:这里会暴露192.168.188.129上用户dd1的密码。
避免暴露密码方法:
a、使用rsync将公钥文件传输过去
b、将id_rsa的内容复制出来,然后追加到192.168.188.129里的authorized_keys里。
4、设置.ssh/权限
在linux操作主机上设置:
# [dd@localhost ~]$ chmod 700 ~/.ssh/# [dd@localhost ~]$ chmod 600 ~/.ssh/*# [dd@localhost .ssh]$ lltotal 16-rw------- 1 dd dd 381 Aug 30 16:04 authorized_keys-rw------- 1 dd dd 1766 Aug 30 17:29 id_rsa-rw------- 1 dd dd 389 Aug 30 17:29 id_rsa.pub-rw------- 1 dd dd 354 Aug 30 18:24 known_hosts
在linux服务器上设置:
# [root@localhost ~]$ chmod 700 /home/dd1/.ssh/# [root@localhost ~]$ chmod 600 /home/dd1/.ssh/*# [root@localhost ~]# ll /home/dd1/.ssh/total 8-rw-------. 1 dd1 dd 389 Aug 30 20:52 authorized_keys-rw-------. 1 dd1 dd 354 Aug 31 09:57 known_hosts
5、这时候连接,就能够正常了。
[dd@localhost .ssh]$ ssh dd1@192.168.188.129Enter passphrase for key '/home/dd/.ssh/id_rsa': # 需要输入密钥口令Last login: Thu Aug 30 20:11:42 2018[dd1@localhost ~]$# 如果在ssh-keygen生成密钥时,没有输入密钥口令,而是一路回车,那么这里用ssh连接的时候也不会要求输入口令了。但是这样很不安全,因为如果别人把你的私钥文件拿去了,他也就不用密码登录了,服务器就是他的了。(如果没有口令,想要增加,建议把之前的删掉,重新开始弄。)# 如果在ssh-keygen生成密钥时,输入了密钥口令,那么在这里用ssh连接的时候,就需要输入就需要输入口令。(推荐)
参考:https://www.cnblogs.com/panblack/p/Secure_ssh_trust_connection.html
缺陷:
但是这样很麻烦,虽然不用输入服务器密码了,但是需要输入口令,很不利于以后的自动化运维,所以我们还需要配置一下ssh-agent。
6、ssh-agent代理。
启动代理守护进程:
[dd@localhost .ssh]$ eval `ssh-agent`Agent pid 26506
将私钥添加到代理守护进程:
[dd@localhost .ssh]$ ssh-addEnter passphrase for /home/dd/.ssh/id_rsa:Identity added: /home/dd/.ssh/id_rsa (/home/dd/.ssh/id_rsa)
试试连接目标主机:
[dd@localhost .ssh]$ ssh dd1@192.168.188.129Last login: Thu Aug 30 20:52:41 2018 from 192.168.188.128[dd1@localhost ~]$
OK了!
这时候,我们在本机去连接服务器192.168.188.129就不在需要密码和口令了。
四、在服务器上关闭密码连接。
在192.168.188.129服务器上设置:
[root@localhost .ssh]# vim /etc/ssh/sshd_configRSAAuthentication yesPubkeyAuthentication yes # 公钥认证默认也是yes的,但是注释了,关闭要改为noAuthorizedKeysFile %h/.ssh/authorized_keys#为了安全性,可以修改SSH端口Port 222#禁用root账户登录,非必要,但为了安全性,请配置PermitRootLogin no#有了证书登录了,就禁用密码登录吧,密码登录改为no,安全要紧PasswordAuthentication no
转载于:https://www.cnblogs.com/doublexi/p/9564493.html
ssh免密登录linux服务器相关推荐
- Linux运维:Shell脚本实现ssh免密登录远程服务器
LInux系统日常运维过程中,经常需要在本地运行脚本执行对远程主机的命令,正常情况下,ssh登录远程服务器时会提示输入密码,这会影响到脚本的自动执行(因为shell脚本中没有自动填充密码的命令).有三 ...
- linux中ssh免密登录,Linux之SSH免密登录
Linux 双向 SSH 免密登录 原理 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录.双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要 ...
- ssh免密登录远程服务器
问题 每次使用vscode连接远程服务器都需要输入密码,切换文件夹也需要输入密码,十分麻烦,于是考虑配置一下免密登录. 方法 如果不想了解具体原理,也可以直接跳到步骤. ssh-keygen命令用来生 ...
- 使用ssh免密码登录Linux服务器
频繁登录Linux服务器时,使用ssh <username>@<host>的方式登录,但是每次都需要输入密码是件很麻烦的事.我们还可以使用私钥/公钥对的方式在免密码登录服务器. ...
- mac+免密登陆+linux,mac ssh免密登录Linux
mac上使用ssh登录linux,不想装各种工具,又很想偷懒(不想输密码).采用密钥的形式是个思路,找了很多例子,但实现中出了不少小问题.最终通了,实际步骤很简单,先留个底,回头再研究其原理. 1. ...
- linux关于ssh免密登录、known_hosts文件
1. 关于ssh SSH 是 Secure Shell 的缩写,SSH 为建立在应用层基础上的安全协议.SSH 是目前广泛采用的安全登录协议,专为远程登录会话和其他网络服务提供安全性的协议,替代以前不 ...
- 本地mac配置ssh免密登录远程linux服务器
本地mac配置ssh免密登录远程linux服务器 每次输入密码登录服务器也就罢了,结果scp时每次都要输入密码,分分秒秒阿西吧.哈哈哈,回归正题,配置免密登录后,畅通无阻啊,哈哈哈 检查自己~/.ss ...
- linux上ssh免密登录原理及实现
因为我的服务器集群需要回收日志到中央进行统一处理,所以需要建立ssh互信关系实现免密登录.关于ssh的使用大家可能都很熟悉了,我们今天主要来讲下ssh连接和免密登录的原理. scp 传输文件 scp( ...
- linux上怎么实现ssh免密登录
这里直接写步骤,下面的有兴趣可以看看 1.进入到.ssh目录下 [root@wangjian /]# cd /root/.ssh/ [root@wangjian .ssh]# 2. 执行生成密钥,所有 ...
最新文章
- 【Python-ML】聚类的性能评价指标
- HOOK技术-满足我们程序的偷窥欲
- 微信小程序 PDF下载打印
- EHCache 初步使用指南
- xaml与HTML相比较,还是太复杂
- [转]在jQuery的each()函数中使用continue和break
- 黑鲨5系列游戏手机通过3C认证:支持120W超级快充
- linq to access 简单实现
- 山西高考2021年成绩查询时间,2021年山西高考成绩公布时间
- 怎么建立socket长连接???
- 重定向telnet方法
- xdebug常用配置
- pygame.font.Font().render() 计算基线(baseline)的原点(origin)坐标
- CBD将建智慧城市管理平台
- MySQL 如何优化大分页查询?
- 用Radeon RAMDisk在Windows 10中创建关机或重启不消失的内存虚拟盘
- 【图文详解】环境变量中Path环境变量作用详解
- ECCV2022 Workshop | 复杂环境中的多目标跟踪和分割
- win10 格式化 linux u盘,Win10怎么格式化u盘 Win10中对U盘格式化的两种常用方法
- 基于Laravel 框架的内容管理系统