zoukankan      html  css  js  c++  java
  • ssh和scp详解

    一、SSH客户端使用

      使用ssh客户端远程登陆到指定的计算机:

    $ ssh {user}@{remote} -o IdentityFile=/home/id_rsa -o StrictHostKeyChecking=no
      user:远程机器上的用户名,如果不指定的话默认为当前用户;
      remote:远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名;
      port:ssh Server **的端口,SSH服务器默认端口号是 22,不指定则使用默认端口号。

      在工作中,SSH服务器的端口号很有可能不是22,如果遇到这种情况就需要使用 -p 选项,指定正确的端口号,否则无法正常连接到服务器。

    1、免密码登陆

           ssh无密码登陆要使用公钥和私钥。linux下可以用ssh-keygen生成公钥/私钥对。

    (1)在客户端机器生成公钥/私钥对

    $ ssh-keygen -t rsa -P ''

          直接ssh-keygen然后三次回车就可以了。会在/home/root(用户) 下生成.ssh目录,.ssh下有id_rsa和id_rsa.pub。
           -P表示密码;-P  '':表示空密码,这种情况可以不使用-P参数。

    (2)上传公钥到服务器

      把客户端机器生成的id_rsa.pub公钥复制到服务器的 /home/root(用户)/.ssh/authorized_keys文件中。

    $ scp  .ssh/id_rsa.pub   hqs@192.168.2.77:/home/hqs/.ssh/id_rsa.pub
    # 把复制的id_rsa.pub添加到.ssh/authorized_keys文件
    $ cat id_rsa.pub >> .ssh/authorized_keys
    $ chmod 600 .ssh/authorized_keys        # authorized_keys的权限要为600

    (3)非对称加密算法

           使用 公钥 加密的数据,需要使用 私钥 解密;
           使用 私钥 加密的数据,需要使用 公钥 解密。

    2、配置别名

    (1)上传公钥到服务器(ssh-copy-id)

           执行 ssh-copy-id -p port user@remote

    (2) 配置别名

           配置别名可以让我们进一步偷懒,比如:ssh centos来替代上面这一长串命令,在客户端计算机 ~/.ssh/config 里面追加一下内容:

    Host centos
           HostName  服务器ip地址
           User  python
           Port  22

           保存后,可以使用ssh centos实现远程登陆,scp同样可以使用。

    3、使用rsa秘钥登陆

    $ ssh  {user}@remoteaddr  -o IdentityFile=/home/{user}/.ssh/id_rsa -o StrictHostKeyChecking=no

    二、SCP使用

      scp 就是 secure copy,是一个 Linux 下用来进行 远程拷贝文件 的命令。既可以将本地内容拷贝到远程计算机,也可以将远程计算机内容拷贝到本地。

    $ scp  用户名@ip:文件名或路径  用户名@ip:文件名或路径
           -r:若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名;
           -P:若远程SSH服务器的端口不是22,需要使用大写字母 -P 选项指定端口。
           -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
    
    # 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
    $ scp -P port 01.py user@remote:Desktop/01.py
    
    # 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
    $ scp -P port user@remote:Desktop/01.py 01.py
    
    # 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
    $ scp -r demo user@remote:Desktop
    
    # 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
    $ scp -r user@remote:Desktop demo
    
    # 指定RSA秘钥
    # 下载数据
    $ scp  -i  ~/.ssh/id_rsa  -r root@remote_ip:/data/www/develop/develop_activity_task  /data/www/activity_task_bak
    
    # 上传数据
    $ [root@localhost fsp]# scp -i /home/id_rsa patch.zip fsp@172.28.0.2:/home/fsp/
    Authorized users only. All activities may be monitored and reported.
    patch.zip

      注意:

      scp 这个终端命令只能在 Linux 或者 UNIX 系统下使用;

      如果在windows系统中,可以安装putty,使用pscp命令行工具或者安装FileZilla使用FTP进行文件传输。

  • 相关阅读:
    Quartz 框架的应用
    Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
    Quartz定时任务学习(一)简单任务
    Maven系列--"maven-compiler-plugin"的使用
    运用JMX监控Tomcat/Java jvisualvm简要说明
    [轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法
    [Ogre][地形]OgreTerrain的实现原理分析
    [Ogre][地形]OgreTerrain分析以及使用
    [算法][C]计算向量的角度
    [寻路][导航][算法][地图开发]寻路算法的对比优势2
  • 原文地址:https://www.cnblogs.com/xiugeng/p/10575240.html
Copyright © 2011-2022 走看看