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

转载于:https://www.cnblogs.com/yangliguo/p/8463028.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值