Linux 免密登陆/传输文件

12 篇文章 0 订阅

SSH 免密登陆,SCP 免密传输

工作经常用到 scp ssh sftp 等命令,每次都需要输入密码。能否实现免密传输、免密登陆?答案是 肯定,可以实现。只需要将设备公钥添加到服务器认证列表,ssh 或 scp 交互过程检测到匹配公钥后 无需再输入密码。请详看此篇文章。

提示:此文章 SSH 免密认证。



Linux ssh密钥登陆 (免密码登陆)
ssh 两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方法。
使用密钥登录分为3步:
1、生成密钥(公钥与私钥)
2、放置公钥到服务器~/.ssh/authorized_key文件中
3、配置ssh客户端使用密钥登录。

1 密钥认证

1.1 生成密钥

ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/lamborghini/.ssh/id_rsa):  
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/lamborghini/.ssh/id_rsa
Your public key has been saved in /home/lamborghini/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Mx3EzUAL1B9mIquGG4L96GbNWkUuY5zIc7hTcaDFu/U lamborghini@TRACTOR
The key's randomart image is:
+---[RSA 2048]----+
|   .o  .o+++     |
|   o..  .o+.*    |
|  . ..o  oo= .   |
| . +.*. .. ..    |
| o= O+ooS .      |
|. o*++o Eo       |
|  o*.+           |
|  +o=            |
| +o.             |
+----[SHA256]-----+

1.2 添加密钥认证到服务器

将密钥拷贝到服务端,手动添加密钥到认证列表

# user_name指用户名,host_name指服务器用户名,host_ip指服务器地址
scp ~/.ssh/id_rsa.pub host_name@host_ip:/home/host_name/user_name.pub
ssh host_name@host_ip
cp ~/user_name.pub >> ~/.ssh/authorized_keys

亦可直接添加到需要认证服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub user_name@host_ip

2 scp 命令详解

2.1 scp 命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。
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)的选项。

命令示例

传输文件

scp local_folder/local_file remote_username@IP:/remote_folder
scp local_folder/local_file remote_username@IP:/remote_folder/remote_file
# 交换原路径和目标路径 实现文件拷贝到本地
scp remote_username@IP:/remote_folder/local_file local_folder 
scp remote_username@IP:/remote_folder/remote_file local_folder/local_file 

传输目录

scp -r local_folder remote_username@IP:/remote_folder
# 交换原路径和目标路径 实现文件拷贝到本地
scp -r remote_username@IP:/remote_folder local_folder

Tips

a) 服务器免密传输已实现,服务器向设备端免密传输呢?同样添加认证密钥方式 由服务端向设备端执行一次即可;换个理解方式:此时服务器应该变身 “设备端”,而设备端则变成“服务器”。

b) 认证过后,首次传传输文件 由于没有添加本机未添加到可信设备列表,可能会询问是否认证;需要输入 yes 才能继续。ssh / scp里加上 -o “StrictHostKeyChecking no” 即可跳过这个yes/no询问,直接进入下一步。

c) 设备端如果有多个密钥,且通过服务器认证密钥非默认密钥;ssh 时提示密钥不正确,此时可以指定使用密钥。 ssh / scp 增加 -i ~/.ssh/xxx.pub 指定此次操作中要用到密钥。

总结

哪有所谓的岁月静好,只不过有人在默默替你负重前行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值