zoukankan      html  css  js  c++  java
  • SSH、SCP命令及使用说明

    SSH篇

    1、ssh介绍

    SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
    SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。

    由于它采用了公钥加密,整个过程是这样的:

    1)远程主机收到用户的登录请求,把自己的公钥发给用户。
    2)用户使用这个公钥,将登录密码加密后,发送回来。
    3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

    这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
    可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

    2、SSH使用

    ssh user@host

    释义:用户名user,登录远程主机host,(ssh默认端口是22,不加端口号就是默认的端口登陆)

    ssh -p 10000 user@host

    释义:用户名user,通过端口10000,登录远程主机host

    3、SSH使用捷径:公钥登录

    使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
    所谓"公钥登录",就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
    用ssh-keygen命令生成一个:

    ssh-keygen

    运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
    运行结束以后,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是你的公钥,后者是你的私钥。
    这时再输入下面的命令,将公钥传送到远程主机host上面

    ssh-copy-id user@host

    好了,从此登录,就不不用输入密码了。
    如果没用的话,就打开远程主机的/etc/ssh/sshd_config这个文件,检查下面几行前面"#"注释是否取掉。

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

    然后,重启远程主机的ssh服务。

    systemctl restart sshd.service

    SCP篇

    1、scp 远程文件拷贝命令介绍

    Linux scp命令用于Linux之间复制文件和目录。

    scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

    2、从本地复制到远程

    命令格式:
    
    建议使用这两个需要输入密码
    scp local_file remote_username@remote_ip:remote_folder 
    或者 
    scp local_file remote_username@remote_ip:remote_file 
    
    样例:
    scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
    scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
    
    第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名。
    
    复制目录命令格式:
    scp -r local_folder remote_username@remote_ip:remote_folder
    或者
    scp -r local_folder remote_ip:remote_folder
    
    =============================================================================================================

    3、从远程复制到本地

    从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例
    
    应用实例:
    
    scp  remote_user@remote_ip:remote_file   local_file 
    
    scp -r remote_user@remote_ip:remote_dir  local_dir 
    
    scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
    scp -r root@www.runoob.com:/home/root/others/ /home/space/music/
    说明
    1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:
    
    #scp 命令使用端口号 4588
    scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
    2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用
    参数说明:
    
    -1: 强制scp命令使用协议ssh1
    -2: 强制scp命令使用协议ssh2
    -4: 强制scp命令只使用IPv4寻址
    -6: 强制scp命令只使用IPv6寻址
    -B: 使用批处理模式(传输过程中不询问传输口令或短语)
    -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
    -p:保留原文件的修改时间,访问时间和访问权限。
    -q: 不显示传输进度条。
    -r: 递归复制整个目录。
    -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
    -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
    -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
    -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
    -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
    -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
    -P port:注意是大写的P, port是指定数据传输用到的端口号
    -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
  • 相关阅读:
    Beta冲刺阶段
    用例图练习
    第四次作业--个人作业--必应词典案例分析
    第五次作业——团队项目——需求规格说明书
    结对编程第三次作业
    第二次作业— —结对项目
    Git使用心得
    Android平台的开发环境的发展演变
    软件工程的实践项目的自我目标
    面试中遇到的问题
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/12703190.html
Copyright © 2011-2022 走看看