ssh复制公钥成功后仍需输入密码
1,网上说权限问题
登录流程:

被登录机器的文件权限:
//用户权限
chmod 700 /home/username
//.ssh文件夹权限
chmod 700 ~/.ssh/
// ~/.ssh/authorized_keys 文件权限
chmod 600 ~/.ssh/authorized_keys
2,修改配置文件重起服务,被登录服务器操作
#禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 有了证书登录了,就禁用密码登录。
PasswordAuthentication no
以上配置解决问题
如果在拷贝公钥过程中出现“Agent admitted failure to sign using the key”异常,执行如下命令:
ssh-add ~/.ssh/id_rsa
其他
应用层和传输层
(1)客户端发起连接请求。
(2)远程主机收到用户的登录请求,把自己的公钥发给客户端。
(3)客户端接收远程主机的公钥,然后使用远程主机的公钥加密登录密码,紧接着将加密后的登录密码连同自己的公钥一并发送给远程主机。
(4)远程主机接收客户端的公钥及加密后的登录密码,用自己的私钥解密收到的登录密码,如果密码正确则允许登录,
到此为止双方彼此拥有了对方的公钥,开始双向加密解密
1. 基于口令的安全验证
2.基于密匙的安全验证
客户端的公钥放到服务器上,那么客户端就可以免密码登录服务器了,客户端的公钥应该放到服务器上
默认为你要登录的用户的家目录下的.ssh目录下authorized_keys 文件中(即:~/.ssh/authorized_keys)
ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa
选项与参数:
这个命令会产生一个公钥(~/.ssh/id_rsa.pub)和密钥(~/.ssh/id_rsa),
-t dsa:表示使用密钥的加密类型,可以为’rsa’和’dsa’
-P ”:表示不需要密码登录
-f ~/.ssh/id_rsa:表示密钥存放的路径为${USER}/.ssh/id_rsa
$ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
scp一般有六种使用方法
本地复制远程文件:(把远程的文件复制到本地)
scp root@www.test.com:/val/test/test.tar.gz /val/test/test.tar.gz
远程复制本地文件:(把本地的文件复制到远程主机上)
scp /val/test.tar.gz root@www.test.com:/val/test.tar.gz
本地复制远程目录:(把远程的目录复制到本地)
scp -r root@www.test.com:/val/test/ /val/test/
远程复制本地目录:(把本地的目录复制到远程主机上)
scp -r ./ubuntu_env/ root@192.168.0.111:/home/pipi
ssh -l name remoteserver ‘command’
说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。
$ ssh -l root 192.168.1.100 svmon -G
禁止ROOT 远程登录
打开/etc/ssh/sshd_config文件并查找下面这样的行:
#PermitRootLogin yes
ssh配置文件
# 1. 关于 SSH Server 的整体设定,包含使用的 port 啦,以及使用的密码演算方式
Port 22 # SSH 预设使用 22 这个 port,您也可以使用多的 port !
# 亦即重复使用 port 这个设定项目即可!
Protocol 2,1 # 选择的 SSH 协议版本,可以是 1 也可以是 2 ,
# 如果要同时支持两者,就必须要使用 2,1 这个分隔了!
#ListenAddress 0.0.0.0 # 监听的主机适配卡!举个例子来说,如果您有两个 IP,
# 分别是 192.168.0.100 及 192.168.2.20 ,那么只想要
# 开放 192.168.0.100 时,就可以写如同下面的样式:
ListenAddress 192.168.0.100 # 只监听来自 192.168.0.100 这个 IP 的SSH联机。
# 如果不使用设定的话,则预设所有接口均接受 SSH
PidFile /var/run/sshd.pid # 可以放置 SSHD 这个 PID 的档案!左列为默认值
LoginGraceTime 600 # 当使用者连上 SSH server 之后,会出现输入密码的画面,
# 在该画面中,在多久时间内没有成功连上 SSH server ,
# 就断线!时间为秒!
Compression yes # 是否可以使用压缩指令?当然可以?!
# 2. 说明主机的 Private Key 放置的档案,预设使用下面的档案即可!
HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私钥
HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥
HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥
# 2.1 关于 version 1 的一些设定!
KeyRegenerationInterval 3600 # 由前面联机的说明可以知道, version 1 会使用
# server 的 Public Key ,那么如果这个 Public
# Key 被偷的话,岂不完蛋?所以需要每隔一段时间
# 来重新建立一次!这里的时间为秒!
ServerKeyBits 768 # 没错!这个就是 Server key 的长度!
# 3. 关于登录文件的讯息数据放置与 daemon 的名称!
SyslogFacility AUTH # 当有人使用 SSH 登入系统的时候,SSH会记录资
# 讯,这个信息要记录在什么 daemon name 底下?
# 预设是以 AUTH 来设定的,即是 /var/log/secure
# 里面!什么?忘记了!回到 Linux 基础去翻一下
# 其它可用的 daemon name 为:DAEMON,USER,AUTH,
# LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,
LogLevel INFO # 登录记录的等级!嘿嘿!任何讯息!
# 同样的,忘记了就回去参考!
# 4. 安全设定项目!极重要!
# 4.1 登入设定部分
PermitRootLogin no # 是否允许 root 登入!预设是允许的,但是建议设定成 no!
UserLogin no # 在 SSH 底下本来就不接受 login 这个程序的登入!
StrictModes yes # 当使用者的 host key 改变之后,Server 就不接受联机,
# 可以抵挡部分的木马程序!
#RSAAuthentication yes # 是否使用纯的 RSA 认证!?仅针对 version 1 !
PubkeyAuthentication yes # 是否允许 Public Key ?当然允许啦!只有 version 2
AuthorizedKeysFile .ssh/authorized_keys
# 上面这个在设定若要使用不需要密码登入的账号时,那么那个
# 账号的存放档案所在档名!
# 4.2 认证部分
RhostsAuthentication no # 本机系统不止使用 .rhosts ,因为仅使用 .rhosts 太
# 不安全了,所以这里一定要设定为 no !
IgnoreRhosts yes # 是否取消使用 ~/.ssh/.rhosts 来做为认证!当然是!
RhostsRSAAuthentication no # 这个选项是专门给 version 1 用的,使用 rhosts 档案在
# /etc/hosts.equiv配合 RSA 演算方式来进行认证!不要使用
HostbasedAuthentication no # 这个项目与上面的项目类似,不过是给 version 2 使用的!
IgnoreUserKnownHosts no # 是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录
# 的主机内容?当然不要忽略,所以这里就是 no 啦!
PasswordAuthentication yes # 密码验证当然是需要的!所以这里写 yes ?!
PermitEmptyPasswords no # 若上面那一项如果设定为 yes 的话,这一项就最好设定
# 为 no ,这个项目在是否允许以空的密码登入!当然不许!
ChallengeResponseAuthentication yes # 挑战任何的密码认证!所以,任何 login.conf
# 规定的认证方式,均可适用!
#PAMAuthenticationViaKbdInt yes # 是否启用其它的 PAM 模块!启用这个模块将会
# 导致 PasswordAuthentication 设定失效!
# 4.3 与 Kerberos 有关的参数设定!因为我们没有 Kerberos 主机,所以底下不用设定!
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosTgtPassing no
# 4.4 底下是有关在 X-Window 底下使用的相关设定!
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
# 4.5 登入后的项目:
PrintMotd no # 登入后是否显示出一些信息呢?例如上次登入的时间、地点等
# 等,预设是 yes ,但是,如果为了安全,可以考虑改为 no !
PrintLastLog yes # 显示上次登入的信息!可以啊!预设也是 yes !
KeepAlive yes # 一般而言,如果设定这项目的话,那么 SSH Server 会传送
# KeepAlive 的讯息给 Client 端,以确保两者的联机正常!
# 在这个情况下,任何一端死掉后, SSH 可以立刻知道!而不会
# 有僵尸程序的发生!
UsePrivilegeSeparation yes # 使用者的权限设定项目!就设定为 yes 吧!
MaxStartups 10 # 同时允许几个尚未登入的联机画面?当我们连上 SSH ,
# 但是尚未输入密码时,这个时候就是我们所谓的联机画面啦!
# 在这个联机画面中,为了保护主机,所以需要设定最大值,
# 预设最多十个联机画面,而已经建立联机的不计算在这十个当中
# 4.6 关于使用者抵挡的设定项目:
DenyUsers * # 设定受抵挡的使用者名称,如果是全部的使用者,那就是全部
# 挡吧!若是部分使用者,可以将该账号填入!例如下列!
DenyUsers test
DenyGroups test # 与 DenyUsers 相同!仅抵挡几个群组而已!
# 5. 关于 SFTP 服务的设定项目!
Subsystem sftp /usr/lib/ssh/sftp-server
ssh复制公钥成功后仍需输入密码的更多相关文章
- 解决:centos配置ssh免密码登录后仍要输入密码
转自https://www.jb51.net/article/121180.htm 第一步:在本机中创建秘钥 1.执行命令:ssh-keygen -t rsa 2.之后一路回车就行啦:会在-(home ...
- CentOS配置SSH免密码登录后,仍提示输入密码
CentOS配置SSH无密码登录需要3步: 生成公钥和私钥 导入公钥到认证文件,更改权限 测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...
- ssh 免密码登录(设置后仍需输密码的原因及解决方法)
按操作步骤操作不行的最可能原因是:文件权限,不论是a机还是要访问的b机的文件的权限都要改成对应的700,600:必须严格是这个权限,否则会出现设置免密fail的情况. serverA 免密码登录到 s ...
- ssh复制秘钥成功后仍然需要输入密码
执行免秘钥操作 ssh-copy-id -i ~/.ssh/id_rsa.pub lyg@192.168.1.65 被登录机器的文件权限: //用户权限 chmod 700 /home/usernam ...
- SSH 在ssh-copy-id 之后仍需输入密码的问题
最近在使用Ansible,基于SSH. 远程服务器IP: 192.168.200.193 以下提及的远程服务器都为该服务器. 远程用户: ansible_user 在本地服务器中,ssh-keygen ...
- centos配置ssh免密码登录后,仍提示输入密码
配置SSH无密码登录需要3步: 1.生成公钥和私钥 2.导入公钥到认证文件,更改权限 3.测试 1.生成公钥和私钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 默 ...
- Hadoop集群搭建(cluster setup),ssh免密后一直要求输入密码的原因
前段时间,网上有言SHA-1加密技术,已经被谷歌公司破解,在linux系统中,集群间加密的技术是用DSA秘钥,秘钥本身其实是一种算法,就像前面说的SHA-1也是加密算法的一种. 免密在linux系统中 ...
- SSH时不需输入密码
我这里有2台机器,一台装了Teradata数据库,ip是192.168.184.128,称它为teradata-pc:另一台装了Oracle数据库,ip地址是192.168.184.129,称它为 ...
- ssh配置authorized_keys后仍然需要输入密码的问题
前阵子搭建Hadoop时,配置了本机(localhost)的ssh的公钥到authorized_keys文件中,但是在ssh连接localhost时仍然提示需要输入密码,后来发现是$HOME/.ssh ...
随机推荐
- Akka系列(七):Actor持久化之Akka persistence
前言.......... 我们在使用Akka时,会经常遇到一些存储Actor内部状态的场景,在系统正常运行的情况下,我们不需要担心什么,但是当系统出错,比如Actor错误需要重启,或者内存溢出,亦或者 ...
- SpringBoot如何使用PUT、DELETE请求方式
SpringBoot 2.2.X默认不支持put,delete等请求方式的. 首先需要在配置文件中打开他们,代码如下: spring.mvc.hiddenmethod.filter.enabled=t ...
- Python的is和==区别
字符串比较 1.比较字符串是否相同: ==:比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 以上结果不同 比较数字时不能使用is,结果有时是True,有时是False,is 相 ...
- G1 垃圾收集器之对象分配过程
G1的年轻代由eden region 和 survivor region 两部分组成,新建的对象(除了巨型对象)大部分都在eden region中分配内存,如果分配失败,说明eden region已经 ...
- java.lang.IllegalArgumentException: id to load is required for loading
java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.LoadEv ...
- check cve
今天想检查一下 Gitlab 11.9.0 产品受哪些 cve 的影响.其实网上已经有很多网站可以查询产品的相关 cve,但就是粒度比较粗.我想在 cve 列表中筛选出特定的版本,已经特定的版本,比如 ...
- 完整的JavaScript包括三部分、script标签、JavaScript的基本语法以及变量和字面量的关系
完整的JavaScript包括三大部分: -ECMAScript JavaScript的开发规范:提供核心语言功能 -DOM document object model 文档对象模型:提供 ...
- 2019-11-29-git无法pull仓库refusing-to-merge-unrelated-histories
title author date CreateTime categories git无法pull仓库refusing to merge unrelated histories lindexi 201 ...
- poj 1664 放苹果(dfs)
放苹果 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 30284 Accepted: 19098 Description ...
- Win7 Linux双系统,恢复Linux启动项
在一台电脑上安装Win7 Centos双系统,先安装Win,再安装Centos7.装完后,丢失Linux启动项. 恢复步骤,下载EasyBCD,添加新条目,操作系统选择Linux/BSD,类型选择GR ...