概述

Public Key认证的主要魅力在于认证时承诺不必提供密码就能够同远程系统建立连接。

Public Key认证的基础在于一对密钥,public key和private key,public key对数据进行加密而且只能用于加密,private key 只能对所匹配的public key加密过的数据进行解密。

我们把public key放在远程系统合适的位置,然后从本地开始进行ssh连接。

此时,远程的sshd会产生一个随机数并用我们产生的public key进行加密后发给本地,本地会用private key进行解密并把这个随机数发回给远程系统。

最后,远程系统的sshd会得出结论我们拥有匹配的private key允许我们登录。

SFTP免密码登录操作方法

1) 登陆服务端主机,在当前用户根目录执行(以RSA算法为例)

如下命令:

ssh-keygen –t rsa

屏幕显示内容均可直接以回车使用默认项,此时在$home/.ssh目录下生成I d_rsa私钥(private key)及id_rsa.pub公钥(public key)两个文件。

2) 将服务端的$home/.ssh/id_rsa.pub文件上传到客户端机的$home/.ssh目录下

通过scp命令传到 客户端

scp  $home/.ssh/id_rsa.pub username@client_ip:$home/.ssh

在客户端机$home/.ssh目录下执行命令:

cat id_rsa.pub >> authorized_keys

3)将客户端各主机信息添加到$home/.ssh/known_hosts文件中

例如:
服务端IP是10.45.7.154
客户端为:10.45.7.61

在服务端执行 sftp usename@10.45.7.61命令提示如下:

qdgcp@mdw:~/.ssh> sftp qmdb@10.45.7.61
Connecting to 10.45.7.61...
The authenticity of host '10.45.7.61 (10.45.7.61)' can't be established.
RSA key fingerprint is ea:53:c8:cf:24:31:18:d8:47:68:8d:18:65:a4:e8:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.45.7.61' (RSA) to the list of known hosts.

这样,在服务端的$home/.ssh/目录会出现一个known_hosts文件,客户端主机信息将添加到这个文件中。

按上述方法实现服务端主机和客户端主机间的公私钥配对后,从服务端主机向客户端主机就可以实现同一用户名的sftp自动安全登陆操作了。


注意:
如果我在服务端使用root用户登录,并且执行了

 sftp oracle@10.45.7.61 或者ssh  oracle@10.45.7.61

这个时候 在A上执行 ssh oracle@10.45.7.61是可以自动登录的,
但是如果 仅仅 ssh 10.45.7.61 ,这个时候linux会自动获取当前登录用户,并赋予到 这个命令上,此时会变成 当前用户@10.45.7.61 ,但由于我们在root用户下执行的免密码登录,这个时候变成了oracle用户,虽然也是 ssh oracle@10.45.7.61,但是用户变了,所以同样的也不能自动登录。 如下图所示

退出ssh的话 输入 logout即可 ,如果退出sftp ,输入exit命令即可。

说明:

在配置ssh自动传输的时候注意,

  • .ssh目录的属主、属组使用当前用户与用户组,
  • .ssh目录的权限请保持700,
  • authorized_keys的权限为644,
  • id_rsa的权限为600,
  • id_rsa.pub的权限为644,
  • 同时检查用户$HOME目录权限必须为755。

确认权限 。
r 4 w 2 x 1
chmod 644 dir 通过chmod 赋权限。

实操

以下操作的是同一台主机, 一般都用于两台主机之间。

[root@entel2 ~]# cd $HOME
[root@entel2 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
79:e6:c1:13:7d:05:39:8a:c8:e8:84:9f:8e:c6:0e:0f root@entel2
The key's randomart image is:
+--[ RSA 2048]----+
|              .o.|
|           .  o. |
|     . o ....... |
|    . o oo....   |
|     + .S *      |
|      +  + o     |
|  E. o    .      |
|   ++ .          |
|   oo            |
+-----------------+
[root@entel2 ~]# cd .ssh/
[root@entel2 .ssh]# ll
total 24
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub[root@entel2 .ssh]# cat id_rsa.pub >>authorized_keys[root@entel2 .ssh]# ll
total 28
-rw-r--r-- 1 root root   393 Nov  3 14:08 authorized_keys
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub[root@entel2 .ssh]# sftp root@10.45.7.198
Connecting to 10.45.7.198...
The authenticity of host '10.45.7.198 (10.45.7.198)' can't be established.
RSA key fingerprint is 5f:b5:f8:02:5a:b0:ad:6b:10:ce:6a:cc:53:55:68:c7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.45.7.198' (RSA) to the list of known hosts.
sftp> exit查看目录 出现了 known_hosts
[root@entel2 .ssh]# ll
total 32
-rw-r--r-- 1 root root   393 Nov  3 14:08 authorized_keys
-rw------- 1 root root  1671 Nov  3 14:05 id_rsa
-rw-r--r-- 1 root root   393 Nov  3 14:05 id_rsa.pub
-rw-r--r-- 1 root root   393 Nov  3 14:09 known_hosts[root@entel2 .ssh]# cat known_hosts
10.45.7.198 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WCBN8XDrGX2Ersub6U8CDtY2a0Ug5YT9fvqTcJm+DCQVj/DZVyvc5ODBC03iDp54ugSOToFluo1RabJjrTEZGMWjYKCZzEXRYO3sq4waGIP1D27bYLs9GW23VZUP0qwpmPKuJs8Asx7S1m9knoQO+wIeyQQt0gkw3TKM4QJSPAsfqSl0XuSTOczS9kbNTGOCpYoB7kThsE8Q87OqRLfjR2ePN3bDTL6RKX8iDm2PelQ2g+oAQCCmWlUF11TYwBahN0bKY7rNPsEQWlYpk0QGdNVTwMGy1j2DrlzoLSyuLfMu5+NgPVgx9MKmLfQlPVdFQyb/n5NShGxG+VAPA+6CQ==[root@entel2 .ssh]# ssh root@10.45.7.198
Last login: Thu Nov  3 14:06:17 2016 from 10.45.22.168[root@entel2 ~]# sftp root@10.45.7.198
Connecting to 10.45.7.198...
sftp> 

ssh特别慢故障

背景:

我们的应用中的QDG上传文件特别慢,文件目录很小,但是传了5个小时才传完,发现命令执行sftp/ssh 本机,也是非常的卡。 问题有可能出现在这里。


过程:

用 ssh -v 目标IP 来查看详细的连接建立过程


解决:

使用root用户调整 /etc/ssh/ssh_config 修改 GSSAPIAuthentication yes 改为no


使用以下命令查看看ssh 连接时间

 time ssh xgj@172.25.146.14 exit

修改配置后,重新启动QDG,秒传,问题得到解决。


常见解决方法:

1、在ssh服务端上更改/etc/ssh/sshd_config文件中的配置为如下内容:

UseDNS no
# GSSAPI options
GSSAPIAuthentication no

然后,执行/etc/init.d/sshd restart重启sshd进程使上述配置生效,在连接一般就不慢了。

2、如果还慢的话,检查ssh服务端上/etc/hosts文件中,127.0.0.1对应的主机名是否和 uname -n的结果一样,或者把本机ip和hostname(uname -n结果)加入到/etc/hosts里。

[xgj@entel2 ~]$ uname -n
entel2
[xgj@entel2 ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.45.7.198 entel2
[xgj@entel2 ~]$ 
  1. 利用ssh -v的调试功能查找慢的原因
    其实可以用下面的命令调试为什么慢的细节(学习这个思路很重要)。

Linux-SFTP/SSH免密码登录相关推荐

  1. Linux设置ssh免密码登录

    一.SSH来源 对于需要远程管理其它机器,一般使用远程桌面或者telnet.linux一般只能是telnet.但是telnet的缺点是通信不加密,存在不安全因素,只适合内网访问. 为解决这个问题,推出 ...

  2. Linux配置SSH免密码登录(非root账号)

    Linux环境下,经常通过SSH从一台服务器登录到另一台服务器,并且登录身份不是root账号,每次都要输入密码挺麻烦的,所以今天就来实战如何配置非root账号的免密码登录: 实战环境 本次实战环境是三 ...

  3. Linux初窥:Linux下SSH免密码登录配置

    目录 环境设置(root权限) 1.关闭防火墙和SELinux 2.设置主机名 3.配置hosts 4.配置sshd 秘钥设置 1.创建免密码登录账户 2.生成秘钥 3.将公钥导入到认证文件 4.设置 ...

  4. linux节点ssh免密码登录linux节点

    需求 节点A要ssh免密码登录节点B. 1.产生密钥 节点A和B都要产生秘钥,并且要注意是否在root用户下,登录对象是用户,而不是机器,所以产生密钥前先从root或者其他用户切换到你说需要的用户.然 ...

  5. Linux之间ssh免密码登录

    为什么80%的码农都做不了架构师?>>>    一.生成公私钥对 $ ssh-keygen -t rsa -P '' Generating public/private rsa ke ...

  6. Linux主机SSH免密码登录设置

    主机A ①ssh-keygen -t rsa,默认都按enter ②cd .ssh && cp id_rsa.pub authorized_keys ②chmod 600 id_rsa ...

  7. linux 无密码登录另一台服务器,ECS Linux服务器ssh免密码登录另外一台服务器的具体设置...

    若有多台linux服务器,为方便起见,服务器之前可设置免密码ssh登录,具体操作参考如下所示: 1 .登录其中一个服务器,执行ssh-keygen -t rsa,按3次回车,将会生成公钥和私钥文件id ...

  8. hadoop设置ssh免密码登录

    对于需要远程管理其它机器,一般使用远程桌面或者telnet.linux一般只能是telnet.但是telnet的缺点是通信不加密,存在不安全因素,只适合内网访问.为 解决这个问题,推出了通信加密通信协 ...

  9. linux下A免密码登录B

    linux下A免密码登录B 现在有两台linux服务器A:192.168.1.111,B:192.168.1.112 1.在A(192.168.123.111)生成公钥私钥对,命令如下: ssh-ke ...

  10. centos配置ssh免密码登录后仍要输入密码的解决方法

    From: https://blog.csdn.net/zwbill/article/details/80448939 前言 在搭建Linux集群服务的时候,主服务器需要启动从服务器的服务,如果通过手 ...

最新文章

  1. 美团技术 mysql_美团MySQL数据库巡检系统的设计与应用
  2. tomcat端口被占用如何解决
  3. PMCAFF| 产品设计,从警示框说起
  4. 左神算法:两个单链表相交的一系列问题(链表是否有环 / 两无环链表是否相交 / 两有环链表是否相交)
  5. LeetCode 954. 二倍数对数组(map计数)
  6. AI 线上峰会 | 人工智能技术解析与实战
  7. 3t硬盘 xp_解决方案:如何在Windows XP SP3 32位系统下识别3T容​​量GPT格式的硬盘...
  8. 麻省理工18年春软件构造课程阅读10“抽象数据类型”
  9. PJzhang:360压缩的用户许可协议和隐私政策阅读
  10. 如何1分钟制作自己的软件
  11. c# 使用正则表达式 提取章节小说正文全本篇
  12. docker安装及加速器
  13. CC1310空中升级笔记04 WSN OAD Example
  14. Dynamic Head: Unifying Object Detection Heads with Attentions 阅读
  15. 论“女生不适合当程序员”
  16. java 读取ppt_Java 读取PPT文本和图片
  17. JAVA Request基本用法
  18. 【Java爬虫】Jsoup
  19. 计算机应用系统统考配书光盘,统考配书光盘计算机应用基础使用手册
  20. unity3d求一个向量的垂直方向

热门文章

  1. vector的元素不仅仅可以使int,double,string,还可以是结构体
  2. 多进程多线程处理文本数据
  3. python笔记:fancyimpute
  4. 线性代数笔记: Cholesky分解
  5. 决策树ID3和C4.5算法Python实现源码
  6. 关于python语言和人工智能哪个说法不正确_在 Windows 7 操作系统中,下列说法错误的是( )。_计算机文化基础答案_学小易找答案...
  7. LeetCode-数组-704. 二分查找
  8. python logging 毫秒级别的时间打印
  9. 消灭 Java 代码的“坏味道”【转】
  10. APACHE TOMCAT INTERVIEW QUESTIONS ANSWERS【转】