zoukankan      html  css  js  c++  java
  • ssh key scp命令 scp无密码传输

    ssh


    ~/.ssh/目录下通常有个文件

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

    这个里面包含的是别人的public key,如果别人有对应的private key,就能够登陆这个机器

    生成自己的key,默认一路回车

    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的截图

    know_host

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

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

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

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

    [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无密码传输文件了

  • 相关阅读:
    hexo 建站参考
    如何在element-UI 组件的change事件中传递自定义参数
    vue 项目中当访问路由不存在的时候默认访问404页面
    百度地图引用时 报出A Parser-blocking, cross site (i.e. different eTLD+1) script
    echarts之legend-改变图例的图标为自定义图片
    大数据浪潮下的前端工程师
    为什么要使用TypeScript开发Web应用程序
    【转】简单理解Vue中的nextTick
    vue项目如何刷新当前页面
    安装Genymotion android模拟器
  • 原文地址:https://www.cnblogs.com/juandx/p/4394469.html
Copyright © 2011-2022 走看看