Linux无密码登录SFTP

目录(?)[-]

  1. 概述
  2. SFTP免密码登录操作方法
    1. 1 登陆服务端主机在当前用户根目录执行以RSA算法为例
    2. 2 将服务端的homesshid_rsapub文件上传到客户端机的homessh目录下
    3. 3将客户端各主机信息添加到homesshknown_hosts文件中
    4. 说明
    5. 实操
  3. ssh特别慢故障

概述

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
  • 1
  • 1

屏幕显示内容均可直接以回车使用默认项,此时在$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
  • 1
  • 1

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

cat id_rsa.pub >> authorized_keys
  • 1
  • 1

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

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

在服务端执行 sftp [email protected]命令提示如下:

[email protected]:~/.ssh> sftp [email protected]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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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



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

 sftp oracle@10.45.7.61
 或者
 ssh  oracle@10.45.7.61
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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

退出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 赋权限。

实操

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

[[email protected] ~]# cd $HOME
[[email protected] ~]# 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 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|              .o.|
|           .  o. |
|     . o ....... |
|    . o oo....   |
|     + .S *      |
|      +  + o     |
|  E. o    .      |
|   ++ .          |
|   oo            |
+-----------------+
[[email protected] ~]# cd .ssh/
[[email protected] .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

[[email protected] .ssh]# cat id_rsa.pub >>authorized_keys

[[email protected] .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

[[email protected] .ssh]# sftp [email protected]
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
[[email protected] .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

[[email protected] .ssh]# cat known_hosts
10.45.7.198 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WCBN8XDrGX2Ersub6U8CDtY2a0Ug5YT9fvqTcJm+DCQVj/DZVyvc5ODBC03iDp54ugSOToFluo1RabJjrTEZGMWjYKCZzEXRYO3sq4waGIP1D27bYLs9GW23VZUP0qwpmPKuJs8Asx7S1m9knoQO+wIeyQQt0gkw3TKM4QJSPAsfqSl0XuSTOczS9kbNTGOCpYoB7kThsE8Q87OqRLfjR2ePN3bDTL6RKX8iDm2PelQ2g+oAQCCmWlUF11TYwBahN0bKY7rNPsEQWlYpk0QGdNVTwMGy1j2DrlzoLSyuLfMu5+NgPVgx9MKmLfQlPVdFQyb/n5NShGxG+VAPA+6CQ==

[[email protected] .ssh]# ssh [email protected]
Last login: Thu Nov  3 14:06:17 2016 from 10.45.22.168

[[email protected] ~]# sftp [email protected]
Connecting to 10.45.7.198...
sftp> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

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
  • 1
  • 1

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



常见解决方法:

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

UseDNS no
# GSSAPI options
GSSAPIAuthentication no
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

然后,执行/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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 利用ssh -v的调试功能查找慢的原因 
    其实可以用下面的命令调试为什么慢的细节(学习这个思路很重要)。
时间: 2024-08-09 21:47:01

Linux无密码登录SFTP的相关文章

linux无密码登录

关于这个小操作,纠结了很久,刚开始就是两步走: ssh-keygen -t rsa 三次回车生成密钥对 ssh-copy-id -i /root/.ssh/id_rsa.pub 1.1.1.1 回传公钥到需要ssh的服务器 后来发现了ssh-key -N "" -f /root/.ssh/id_rsa这个命令,可以跳过回车,直接生成,如获至宝. 再后来,发现ssh-copy-id也麻烦,发现了cat /root/.ssh/id_rsa.pub > /root/.ssh/autho

linux 无密码登录

环境:Linux 脚本:Python 功能:批量IP,远程执行命令.拷贝文件 运行:./ssh_scp.py iplist.txt 脚本内容: #!/usr/bin/env python# -*- coding: utf-8 -*- import paramikoimport stringimport sys host_file = sys.argv[1]username = 'root'password = '[email protected]'port = 22 paramiko.util.

Linux实现SSH无密码登录(对目录权限的设置非常详细,可以参考一下)

假设服务器IP地址为192.168.1.1,机器名:cluster.hpc.org 客户端IP地址为172.16.16.1,机器名:p470-2.wangrx.sioc.ac.cn 客户端用户yzhao需要使用ssh无密码登录服务器的zhaoy帐户 实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是 首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub: 私钥文件:~/.ssh/id_rsa) 然后

linux ssh scp无密码登录

一. 应用场景 假如你Linux Client是客户端, Server为服务器,用户名为user.现在要配置从Client到Server的无密码SSH登录或者无密码的scp拷贝. 例如客户端Client(10.1.10.125) 要 ssh 或者scp 到服务器Server(10.1.10.129),125端命令如下 ssh [email protected] scp ** [email protected] ** 二. 实现方法 1:在Client(10.1.10.125)上执行ssh-key

Linux下通过ssh-keygen和ssh-copy-id命令实现ssh无密码登录访问

一直想把自己的服务器的 SSH 认证的模式从用户名密码模式转换成 RSA 和 DSA 认证协议,借着OpenSSH 4.2的发布,今天写了一下配置过程并收集了一些关于 RSA 和 DSA 的参考文章. 思路整理:一直没有理解公匙模式下的认证过程,这里总结一下公匙和秘匙的制作和安置方法.以下假设一台服务器Server和一台PC作为例子.首先,并不是在服务器上生成公匙和秘匙.因为很多关于RSA 和 DSA 认证协议的文章都使用Linux服务器作为道具,自然也就使用诸如 ssh-keygen -t r

Linux:实现Hadoop集群Master无密码登录(SSH)各个子节点

以下所介绍的安装方式都是在线安装方式,如果你需要连网请参考:Linux:宿主机通过桥接方式连接的VMware内部Linux14.04虚拟机(静态IP)实现上网方案 环境: OS:Linux Ubuntu14.04 Server X64; 服务器列表: 192.168.1.200 master 192.168.1.201 node1 192.168.1.202 node2 192.168.1.203 node3 安装SSH服务 测试是否安装了SSH: sudo ps -e | grep ssh 如

SecureCRT无密码登录Linux服务器

1.使用windows上的SecureCRT生成密钥对. Tools->Create Public Key..->RSA->Passphrase(最好输入,也可为空)->长度默认1024->选择 OpenSSH Key format->选择位置保存. 2.创建session,SSH2属性中的Authentication只选中PublicKey,单击Properites,选择Use Session public key setting和第一步生成的xxx.pub后确定.

SSH无密码登录:只需两个简单步骤 (Linux)

最后更新 2017年4月8日 分类 最新文章 服务器安全 标签 RSA SSH Key 非对称加密 如果你管理一台Linux服务器,那么你就会知道每次SSH登录时或者使用scp复制文件时都要输入密码是一个多么繁琐的过程.这篇教程介绍使用SSH Key来实现SSH无密码登录,而且使用scp复制文件时也不需要再输入密码.除了方便SSH登录,scp复制文件外,SSH无密码登录也为Linux服务器增加了又一道安全防线. SSH无密码登录的设置步骤 首先我们在自己的Linux系统上生成一对SSH Key:

Linux之ssh无密码登录

简单方式实现,多台Linux主机之间ssh无密码登录. 1.在任意一台主机上执行如下命令.如:192.168.10.102 1 [[email protected] ~]# ssh-keygen 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/root/.ssh/id_rsa): 4 Created directory '/root/.ssh'. 5 Enter passphras