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

转自:http://my.oschina.net/captaintheron/blog/3636?from=rss


通常用scp命令通过ssh获取对方linux主机文件的时候都需要输入密码确认,如果需要在主机上做一个自动获取文件的shell脚本,这样显然 是不行的,通过下面的设置,可以不需要输入密码,直接获到文件。
这里假设主机A用来获到主机B的文件。


在主机A上执行如下命令来生成配对密钥:
ssh-keygen -t rsa
显示信息如下:


Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
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:
45:13:ec:31:f9:3d:25:54:7b:5f:03:40:ba:e9:76:cd root@bindiry-ubuntu


按三次回车。


为 ~/.ssh 目录设置权限:
chmod -R 755 .ssh
将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys ,同样给该目录设置权限。


到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.0.3):
scp ~/.ssh/id_rsa.pub 192.168.0.3:/root/.ssh/authorized_keys
下面就可以用scp命令不需要密码来获取主机B的文件了
附scp命令说明:


scp – 安全复制 (远程文件复制工具)
语法:
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2
说明:
Scp在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。 scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许 的。
选项:
-1 强制scp 用协议1
-2 强制scp 用协议2
-4 强制scp用IPV4的网址
-6 强制scp用IPV6的网址
-B 选择批处理模式(防止输入密码)
-C 允许压缩。 标注-C到ssh(1)来允许压缩
-c cipher 选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config 设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file 选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit 限制传输带宽,也就是速度 用Kbit/s的速度
-o ssh_option 可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。
-P port 指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program 指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p 指定修改次数,连接次数,还有对于原文件的模式
-q 把进度参数关掉
-r 递归的复制整个文件夹
-S program 指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V 冗余模式。 让 scp 和 ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

你可能感兴趣的:(Linux下用SCP无需输入密码获取文件)