• ssh 免密登录


    在实现免密登录之前我先介绍关于ssh的几个命令,然后就开始今天的主题。

    命令

    ssh

      ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

    选项

    对象 说明
    -1 强制使用ssh协议版本1;
    -2 强制使用ssh协议版本2;
    -4 强制使用IPv4地址;
    -6 强制使用IPv6地址;
    -A 开启认证代理连接转发功能;
    -a 关闭认证代理连接转发功能;
    -b 使用本机指定地址作为对应连接的源ip地址;
    -C 请求压缩所有数据;
    -F 指定ssh指令的配置文件;
    -f 后台执行ssh指令;
    -g 允许远程主机连接主机的转发端口;
    -i 指定身份文件;
    -l 指定连接远程服务器登录用户名;
    -N 不执行远程指令;
    -o 指定配置选项;
    -p 指定远程服务器上的端口;
    -q 静默模式;
    -X 开启X11转发功能;
    -x 关闭X11转发功能;
    -y 开启信任X11转发功能。

    ssh-keygen

    ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。

    选项

    对象 说明
    -b 指定密钥长度;
    -e 读取openssh的私钥或者公钥文件;
    -C 添加注释;
    -f 指定用来保存密钥的文件名;
    -i 读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
    -l 显示公钥文件的指纹数据;
    -N 提供一个新密语;
    -P 提供(旧)密语;
    -q 静默模式;
    -t 指定要创建的密钥类型。

    ssh-copy-id

    ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

    语法

    ssh-copy-id [-i [identity_file]] [user@]machine
    #-i:指定公钥文件
    

    实例

    1、把本地的ssh公钥文件安装到远程主机对应的账户下:

    ssh-copy-id user@server
    ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
    

    scp

      scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

    选项

    对象 说明
    -1 使用ssh协议版本1;
    -2 使用ssh协议版本2;
    -4 使用ipv4;
    -6 使用ipv6;
    -B 以批处理模式运行;
    -C 使用压缩;
    -F 指定ssh配置文件;
    -l 指定宽带限制;
    -o 指定使用的ssh选项;
    -P 指定远程主机的端口号;
    -p 保留文件的最后修改时间,最后访问时间和权限模式;
    -q 不显示复制进度;
    -r 以递归方式复制。

    实例

    从远处复制文件到本地目录

    scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/
    

    从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。

    从远处复制到本地

    scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/
    

    从10.10.10.10机器上的/opt/soft/中下载mongodb目录到本地的/opt/soft/目录来。

    上传本地文件到远程机器指定目录

    scp /opt/soft/nginx-0.5.38.tar.gz root@10.10.10.10:/opt/soft/scptest
    

    复制本地/opt/soft/目录下的文件nginx-0.5.38.tar.gz到远程机器10.10.10.10的opt/soft/scptest目录。

    上传本地目录到远程机器指定目录

    scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
    

    上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中去。

    实现ssh登录的步骤

    生成公钥和私钥

    [root@ylg ~]$ ssh-keygen  <== 建立密钥对   ssh-keygen等同于ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
    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:
    0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@ylg
    

    运行上面的命令后,系统会出现一系列提示,可以一路回车.

    特别说明,要不要对私钥设置口令(passphrase),如果担心私钥的安全,可以设置一个。没有特殊需求直接Enter,为空

    运行结束以后, 默认在 ~/.ssh目录生成两个文件:

    • id_rsa :私钥
    • id_rsa.pub :公钥

    在服务器上安装公钥

      将公钥复制到要登录的服务器上,并添加到认证文件(.ssh/authorzied_keys)中。

    • 复制服务器上
    scp {-P port} ~/.ssh/id_rsa.pub 远端服务器用户名@host:目录
    
    scp -P 22 ~/.ssh/id_rsa.pub yang@192.168.82.134:~/
    
    • 在服务器上安装公钥
    [root@ylg ~]$ cd .ssh
    [root@host .ssh]$ cat id_rsa.pub >> authorized_keys
    
    或者直接使用ssh-copy-id命令直接将公钥文件传输的远程机器,并生效
    ssh-copy-id -i ~/.ssh/id_rsa.pub yang@192.168.82.134
    
    • 修改权限

    如此便完成了公钥的安装。为了确保连接成功,请保证以下文件权限正确:

    [root@yang .ssh]$ chmod 600 authorized_keys
    [root@yang .ssh]$ chmod 700 ~/.ssh
    

      要登录的服务器ssh目录的权限为700,其下文件authorized_keys和私钥的权限为600。这是linux的安全要求,如果权限不对,自动登录将不会生效。

    • 这样做完之后我们就可以免密码登录了
    ssh yang@192.168.82.134
    
    • 重启服务器的ssh服务的命令
    #RHEL/CentOS系统
    $ service sshd restart
    #ubuntu系统
    $ service ssh restart
    #debian系统
    $ /etc/init.d/ssh restart
    
  • 相关阅读:
    SQL语言基础
    selenium webdriver (python) 第二版
    selenium-webdriver(python) (十六) --unittest 框架
    从用户感知谈软件性能测试
    selenium webdriver (python) 第一版PDF
    selenium-webdriver(python) (十五) -- 鼠标事件
    selenium-webdriver(python) (十四) -- webdriver原理
    如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)
    如何实现跨 Docker 主机存储?- 每天5分钟玩转 Docker 容器技术(73)
    新书发布《每天5分钟玩转Docker容器技术》
  • 原文地址:https://www.cnblogs.com/yangliguo/p/8463028.html
Copyright © 2020-2023  润新知