ssh key scp命令 scp无密码传输

ssh算法


~/.ssh/目录下一般有个文件bash

[root@user .ssh]# ll
总用量 16
-rw-------. 1 root root  552 11月 16 02:48 authorized_keys

这个里面包含的是别人的public key,若是别人有对应的private key,就可以登录这个机器dom

生成本身的key,默认一路回车ssh

ssh-keygen -t rsa -C “wenbintest@gmail.com”
好比若是我默认不加参数,也不输入密码
[root@user34-group5-441 .ssh]# ssh-keygen
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:
20:67:6a:99:d6:85:27:87:78:93:c0:dc:c5:3e:85:86 root@user34-group5-441
The key's randomart image is:
+--[ RSA 2048]----+
|   o.. +..       |
|    ooE++ .      |
|    o @o+.       |
|     X Bo        |
|    * . S.       |
|   o             |
|                 |
|                 |
|                 |
+-----------------+

 

而后会发现.ssh目录下多了几个文件,生成了private key和public key,还有你的public key的指纹,最后是key的截图ide

know_host网站

第一次登录一个机器的时候,会看到提示这个机器的公钥指纹,没法确认host主机的真实性,只知道它的公钥指纹(不是你本身生成的public key的指纹),问你还想继续链接吗?spa

所谓"公钥指纹",是指公钥长度较长(这里采用RSA算法,长达1024位),很难比对,因此对其进行MD5计算,将它变成一个128位的指纹。好比是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再进行比较,就容易多了。code

很天然的一个问题就是,用户怎么知道远程主机的公钥指纹应该是多少?回答是没有好办法,远程主机必须在本身的网站上贴出公钥指纹,以便用户自行核对。blog

当远程主机的公钥被接受之后,它就会被保存在文件known_hosts之中。下次再链接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。ip

[root@user34-group5-439 .ssh]# ll
总用量 16
-rw-------. 1 root root  552 11月 16 02:48 authorized_keys
-rw-------. 1 root root 1679 11月 21 06:50 id_rsa
-rw-r--r--. 1 root root  404 11月 21 06:50 id_rsa.pub
-rw-r--r--. 1 root root  350 11月 21 06:48 known_hosts
[root@user34-group5-439 .ssh]#

authorized_keys

你就能够把public key放到你想登录的机器上(好比你想登录B机器)的authorized_keys文件中了,用以下命令能够放到B机器上

ssh-copy-id  -i /root/.ssh/id_rsa.pub  root@B_ip

无密码登录

若是genkey到时候没有输入密码,那确定就能无密码登录了,好比你在A机器,想要要免密码登录B机器,那就在你的A机器上执行以下

ssh-keygen(一路回车,不要输入密码)
sh-copy-id -i id_rsa.pub root@B_ip

 

权限

设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh

若是权限不正确,ssh认证会拒绝,这很重要!

 

ssh-agent

目的是为了避免输入密码,在多个机器间开心跳转和传输

好比你在local,想要登录到A上去操做,这时候是免密码登录,可是到A上操做完了想直接到B上去,这时候A和B没有配key,就须要密码,可是ssh-agent就来解决这个问题

ssh-agent bash
ssh-add ~/.ssh/id_rsa

而后你就能够开心跳转到A机器了

ssh -A A_ip

而后也能够开心跳转到B机器了

ssh -A B_ip

  

 

scp从 本地 复制到 远程 
====== 
* 复制文件: 
        * 命令格式: 
                scp local_file remote_username@remote_ip:remote_folder 
                或者 
                scp local_file remote_username@remote_ip:remote_file 
                或者 
                scp local_file remote_ip:remote_folder 
                或者 
                scp local_file remote_ip:remote_file 

                第1,2个指定了用户名,命令执行后须要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名; 
                第3,4个没有指定用户名,命令执行后须要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名; 
        * 例子: 
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music 
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 

* 复制目录: 
        * 命令格式: 
                scp -r local_folder remote_username@remote_ip:remote_folder 
                或者 
                scp -r local_folder remote_ip:remote_folder 

                第1个指定了用户名,命令执行后须要再输入密码; 
                第2个没有指定用户名,命令执行后须要输入用户名和密码; 
        * 例子: 
                scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/ 
                scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 

                上面 命令 将 本地 music 目录 复制 到 远程 others 目录下,即复制后有 远程 有 ../others/music/ 目录

 

 

 

scp无密码传输设置

其实就是生成key,可是设置密码为空

好比从A考到B

在A上执行:

ssh-keygen  -t rsa(一路回车)
ssh-copy-id  -i /root/.ssh/id_rsa.pub  root@B_ip

而后就能够从A上向B无密码传输文件了

相关文章
相关标签/搜索