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 dd1

Changing password for user dd1.

New password:

BAD PASSWORD: The password is shorter than 7 characters

Retype 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上进行登录

如果在另外一台电脑上连接这个服务器账号,则除了前面一步的配置之外,还需要手动添加私钥。具体方法为:

工具-> 用户秘钥管理者

选择 导入,然后选择私钥之后选择打开即可正常连接。

备注

如果是服务器管理员,上面有多个用户账号,则需要为每一个用户进行添加权限,这时候除了前面的公钥信息之外,还要绑定用户名。

参考

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 key

The 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 keys

dd1@192.168.188.129's password: #要求输入对方主机dd1的密码

Number of key(s) added: 1

Now 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]$ ll

total 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.129

Enter 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-add

Enter 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.129

Last 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_config

RSAAuthentication yes

PubkeyAuthentication yes  # 公钥认证默认也是yes的,但是注释了,关闭要改为no

AuthorizedKeysFile %h/.ssh/authorized_keys

#为了安全性,可以修改SSH端口

Port 222

#禁用root账户登录,非必要,但为了安全性,请配置

PermitRootLogin no

#有了证书登录了,就禁用密码登录吧,密码登录改为no,安全要紧

PasswordAuthentication no

ssh免密登录linux服务器的更多相关文章

  1. Mac Item2 SSH免密登录Linux 服务器的两种方式

    转自http://blog.csdn.net/jobschen/article/details/52823980 mac ssh登录linux服务器 的两种方式: 个人推荐第二种,zsh方式,只需要把 ...

  2. windows使用vscode设置免密登录linux服务器

    秘钥原理解释 id_rsa.pub是公钥,部署在服务器上 id_rsa是私钥,放在windows本地 本质上它们都是个文本文件 操作流程 生成秘钥对(windows和linux均可) ssh-keyg ...

  3. windows配置ssh免密登录linux

    客户端(windows)要做的事情 默认机器上已安装git,若没有,请先安装git 查看本地是否有ssh公钥文件夹,若没有,则创建文件夹 mkdir ~/.ssh //创建文件夹 生成公钥 邮箱最好为 ...

  4. ssh通过密钥免密登录linux服务器

    由于经常要登录远程服务器,每次都要把密码重输一遍,如下所示: # ssh 用户名@服务器IP # 用户名@服务器IP's password:这里需要手动输入密码然后回车 作为一个懒货,必须要想个办法免 ...

  5. SSH免密码登录Linux服务器

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=587 操作环境: 客户机操作系统:Ubuntu Linux 服务器操作系统:CentOS Linux 免密登陆的原理: ...

  6. macOS Sierra上ssh免密码登录linux服务器

    1.生成私钥文件 在客户端终端下输入以下命令 ssh-keygen -t rsa 每次执行 ssh-keygen -t rsa 产生的私钥文件都会不同 如果文件"~/.ssh/id_rsa& ...

  7. [CentOS7] ssh免密登录 scp免密传输

    我们采用RSA非对称加密算法,原理: 如果,A要和B通讯,则: (1). A通过RSA算法生成公钥(.pub)和私钥(公钥用于加密,私钥用于解密) (2). B将A的公钥文件(.pub)内容加入到au ...

  8. 【Linux】两台服务器ssh免密登录

    背景: 有些场景可能用到两台服务器ssh免密登录.比如服务器自动化部署 开始准备:  服务器A  linux   ip: 192.168.1.1 服务器B  linux  ip: 192.168.1. ...

  9. linux服务器ssh免密登录

    环境:两台服务器,Park01.Park02,配置ssh免密登录 在Park01执行:ssh-keygen 然后一直回车 生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下   然后 ...

随机推荐

  1. linux设置自动获取IP地址

    右键单击,选择设置 勾选桥接模式

  2. js闭包(三)

    场景一:采用函数引用方式的setTimeout调用 闭包的一个通常的用法是为一个在某一函数执行前先执行的函数提供参数.例如,在web环境中,一个函数作为setTimeout函数调用的第一个参数,是一种 ...

  3. 用于.NET环境的时间测试(转)

    用于.NET环境的时间测试   在.NET环境中,衡量运行完整算法所花费的时间长度,需要考虑很多 需要考虑很多种情况 ,如:程序运行所处的线程以及无用单位收集(GC垃圾回收). 在程序执行过程中无用单 ...

  4. php 中两种获得数据库中 数据条数的方法

    一种是传统的利用mysql_num_rows()来计算 $sql="select * from news"; $res=mysql_query($sql); $number=mys ...

  5. 杭电acm 1108题

    这是一道求两个整数最大公倍数的问题,题目比较简单.... 直接使用穷举法计算,数据不是很大.... #include "iostream" using namespace std; ...

  6. 华为2013年西安java机试题目:如何过滤掉数组中的非法字符。

    这道题目为记忆版本: 题目2描述: 编写一个算法,过滤掉数组中的非法字符,最终只剩下正式字符. 示例:输入数组:“!¥@&HuaWei*&%123” 调用函数后的输出结果,数组:“Hu ...

  7. HUST高级软件工程--测试管理工具实践--Day1

    测试管理工具实践--Day1 今天完成任务情况: 课前组好队伍,建好微信群. 课上通过老师的介绍,初步了解各种测试工具的使用情况. 课后选取了组长,在微信群经过"广泛而激烈"的讨论 ...

  8. 使用 Bulma

    一.起因 最近我在学习 SASS,通过它,可以将 CSS 像编程语言一样书写. 在最近之前,我又学习了 Flex 布局,用起来很方便. 所以,我学习了 Bulma 这个纯 CSS 框架--使用 Fle ...

  9. (树)判断二叉树是否为BST

    题目:判断一颗二叉树是否为BST. 思路:其实这个问题可以有多个解决方法. 方法一:递归解决.根据BST的特性.左边的小于根节点的值,右边的大于根节点的值.并且对于每一棵子树都是如此.所以我们可以直接 ...

  10. STL源码剖析--迭代器(转)

    一.为什么需要traits编程技术 前面说了很多关于traits的光荣事迹,但是却一直没有介绍traits究竟是个什么东西,究竟是用来干什么的?traits在英文解释中就是特性,下面将会引入trait ...