Linux之间建立信任,即无密码传输文件

1、基本场景

基本场景是想从一台Server服务器直接登录另一台,或者将Server服务器的数据不需密码验证直接拷贝至Client服务器,以下我们简称Server服务器为S(待发送的数据文件在这台服务器上),Client服务为C,信任关系的最简单操作方法如下:

2、步骤

2.1 S服务器上,进入当前用户根目录下的隐藏目录 .ssh,命令如下

cd ~/.ssh

(注:目录名前的点好”.”表示该文件夹是一个特殊的隐藏文件夹,ls命令下默认是看不到的,通过 ls –a 命令观察到)

2.2 生成S服务器的私钥和公钥:

ssh-keygen -t rsa

ssh-keygen生成密钥用于信任关系生成

-此时会显示Generating public/private key pair. 并提示生成的公钥私钥文件的存放路径和文件名,默认是放在 /home/username/.ssh/id_rsa 这样的文件里的,通常不用改,回车就可以

然后Enter passphrase(empty for nopassphrase): 通常直接回车,默认不需要口令

Entersame passphrase again: 也直接回车

然后会显式密钥fingerprint生成好的提示,并给出一个RSA加密协议的方框图形。此时在.ssh目录下ls,就可以看到生成好的私钥文件id_rsa和公钥文件id_rsa.pub了

2.3Server服务器上加载私钥文件

仍然在.ssh目录下,执行命令:

ssh-add id_rsa

系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了

下面有几个异常情况处理:

–如果系统提示:could not open a connection to your authentication agent

则需要执行一下命令:

ssh-agent bash

然后再执行上述的ssh-add id_rsa命令

–如果系统提示id_rsa: No such file or directory

这是系统无法找到私钥文件id_rsa,需要看看当前路径是不是不在.ssh目录,或者私钥文件改了名字,例如如果建立的时候改成 aa_rsa,则这边命令中也需要相应改一下

-如果系统提示 command not found,那肯定是你命令敲错字符了

-提示Agent admitted failure to sign using the key,私钥没有加载成功,重试ssh-add

-注意id_rsa/id_rsa.pub文件不要删除,存放在.ssh目录下

2.4 把公钥拷贝至Client服务器上

很简单,例如 scp id_rsa.pub [email protected]:~/.ssh

2.5修改Client服务器文件

ssh登录到Client服务器上,然后在Client服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,没有的话可以建立,没有关系)

cat id_rsa.pub >> ~/.ssh/authorized_keys

以下是各种补充说明,遇到问题时可以参考

注1:这里不推荐用文件覆盖的方式,有些教程直接scp id_rsa.pub 到Client服务器的authorized_keys文件,会导致之前建的其他信任关系的数据被破坏,追加到末尾是更稳妥的方式;

注2: cat 完以后,Client服务器上刚才拷贝过来的id_rsa.pub文件就不需要了,可以删除或移动到其它地方)

注3:ssh-keygen 命令通过-b参数可以指定生成的密钥文件的长度,如果不指定则默认为1024,如果ssh-keygen –b 4096(最长4096),则加密程度提高,但是生成和验证时间会增加。对一般的应用来说,默认长度已经足够胜任了。如果是rsa加密方式,那么最短长度为768byte

注4:authorized_keys文件的权限问题。如果按上述步骤建立关系后,仍然要验证密码,并且没有其他报错,那么需要检查一下authorized_keys文件的权限,需要作下修改: chmod g-w authorized_keys

OK,现在试试在Server端拷贝一个文件到Client服务器,应该无需交互直接就传过去了。

但是此时从Client传数据到Server服务器,仍然是需要密码验证的。如果需要两台服务器间能直接互传数据,则反过来按上述步骤操作一下就可以了

3.各种可能遇到的情况和处理方法

–提示 port 22: Connection refused

可能的原因:没有正确安装最新的openssh-server,安装方法如下

sudo apt-get install openssh-server

不支持apt安装的,可以手工下载:

wget http://ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz

–关于目录和文件的权限设置

.ssh目录的权限必须是700,同时本机的私钥的权限必须设置成600:

chmod 600 id_rsa

否则ssh服务器会拒绝登录

时间: 2024-08-04 15:44:11

Linux之间建立信任,即无密码传输文件的相关文章

ssh两台机器建立信任关系无密码登陆

在建立信任关系之前先看看基于公钥.私钥的加密和认证. 私钥签名过程 消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证 Alice生成公钥和私钥,并将公钥发送给Bob. Alice用自己的私钥生成签名,也就是加密. Alice将签名的信息发送给Bob. Bob用Alice的公钥进行解密,验证签名真伪. 公钥加密过程 消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密 Bob生成自己的公钥和私钥,并将

Linux下用SCP无需输入密码传输文件

最近发现一个很吓人的事情,备份服务器里的备份目录下竟然没有备份文件,仔细一看原来是scp命令需要密码的问题.之前建立过信任关系,可能是因为修改了root密码,不成功了.下面说下具体操作.通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,不过通过建立信任关系,可以实现不输入密码. 这里假设需要备份的服务器 S 的IP:192.168.0.1用作备份的服务器 B 的 IP:192.168.0.2 需要从A免密码输入复制文件至B. 1. 在服务器 S 上执行如下命令来生成配

Linux SCP 命令: 利用SSH传输文件

在linux下一般用scp这个命令来通过ssh传输文件. 1.从服务器上下载文件scp [email protected]:/path/filename /var/www/local_dir(本地目录) 例如scp [email protected]:/var/www/test.txt  把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录) 2.上传本地文件到服务器scp /path/filename [email pr

Linux两台主机之间建立信任

背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系. 1. 生成秘钥,并添加信任 我的环境中node1的ip是192.168.168.201,node2的ip是192.168.168.202. [[email protected] ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成rsa [[email protected] ~]# ssh-copy-id

Linux 批量建立信任关系,实现ssh无密码登陆的脚本

作用: 把当前机器的ssh公钥复制到其他机器,以实现从当前机器可以ssh无密码登陆到其他机器 使用方法: 1)把要添加的ip地址写入到一个文件中,比如host 2)把脚本保存为sh文件,如 install_ssh.sh 设置可执行权限 3)改写脚本中的密码设置,目前只支持固定几个密码. 4)  执行命令 sh install_ssh.sh <host 代码: #!/bin/sh auto_ssh_copy_id() { local HOST=$1 local PASSWD=$2 expect -

两条命令在Linux主机之间建立信任关系

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa //生成当前用户密钥 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] //拷贝到远程机器上面 ssh [email protected] //测试

如何让secureCRT显示Linux的颜色及使用SecureCRT传输文件

一.SecureCRT设置彩色和显示中文 设置Options->SessionOptions ->Emulation,然后把Terminal类型改成ANSI or linux or xterm,必须钩上 ANSI Colour. 字体设置:Options->SessionOptions->Appearance->font然后改成你想要的字体就可以了. 注意: 1:字符集选择utf8,这样可以避免显示汉字乱码 2:选择字体的时候,需要选择ture type的字体(如新宋体),不

Linux 批量建立信任关系,实现ssh无password登陆的脚本

作用: 把当前机器的ssh公钥拷贝到其它机器.以实现从当前机器能够ssh无password登陆到其它机器 用法: 1)把要加入的ip地址写入到一个文件里.比方host 2)把脚本保存为sh文件,如 install_ssh.sh 设置可运行权限 3)改写脚本中的password设置.眼下仅仅支持固定几个password. 4)  运行命令 sh install_ssh.sh <host 代码: #!/bin/sh auto_ssh_copy_id() { local HOST=$1 local P

ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC机下载东西到开发板的嵌入式linux系统里面,很多人首先会想到用tftp sftp等网络工具从网口下载.但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx.zmtx,另外一个是lsz.lrz.个人觉得zmrx/zmtx没有lsz/lrz稳定,建议还是用后者.下面介