Linux ssh/scp/sftp命令使用及免密登录配置

一、ssh 命令

1、命令简介

ssh 命令是 ssh 客户端,允许实现对远程系统经验证地加密安全访问。

当用户远程连接 ssh 服务器时,会复制 ssh 服务器 /etc/ssh/ssh_host*key.pub 文件中的公钥到客户机的 ~/.ssh/know_hosts 中。下次连接时,会自动匹配相对应的私钥。如果无法匹配,将拒绝连接。

2、命令解析

命令格式

ssh options... destination command

常用选项

  • -p PORT #指定远程服务器的端口,默认22

  • -v #调试模式,可以追踪此次连接的过程

  • -i <file> #指定私钥文件路径,实现基于key验证

一般选项

  • -b IP #指定本地主机此次连接使用的IP,如果本地存在多个IP的话

  • -C #开启压缩

  • -F configfile #指定客户端配置文件

  • -t #强制伪终端分配,可用于在远程系统上执行基于屏幕的程序

  • -o option #以K=V格式指定选项

3、常用命令示例

登录远程主机(如果不指定用户名,默认使用当前用户名)

指定用户名登录

登录远程主机执行命令

二、scp 命令

1、命令简介

SCP(Secure Copy Protocol)是基于 SSH2 协议的安全文件传输方式,支持批量操作。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。

2、命令解析

命令格式

scp options SRC... DEST/

常用选项

  • -r #递归复制

一般选项

  • -C #压缩数据流

  • -p #保持原文件的属性信息

  • -q #静默模式

  • -P PORT #指定远程服务器的端口,默认22

常用样式

  • 将文件复制到远程主机:scp logs.tar.gz root@10.0.0.13:/root

  • 将目录复制到远程主机:scp -r syslog root@10.0.0.13:/root

  • 将文件从远程系统复制到本地系统:scp root@10.0.0.13:/root/passwd /root/

  • 将目录从远程主机复制到本地系统:scp -r root@10.0.0.13:/root/scripts /root/

注意:scp 在传输文件的时候,目标路径必须是已存在的,否则会发生报错,导致无法传输文件

3、常用命令示例

将当前主机文件 /root/data.csv 复制到远程主机 root 的家目录下

将当前主机目录 /root/data.csv 复制到远程主机 root 的家目录下

将远程主机的文件复制到本地

将远程主机的目录复制到本地

三、sftp 命令

1、命令简介

sftp(Secure File Transfer Protocol)是基于 SSH 的安全文件传输协议,用于在本地主机与远程服务器之间安全地传输文件。

2、命令解析

命令格式

sftp options username@ip

常用选项

  • -P #指定远程 SSH 端口(默认 22)

  • -i #使用指定的 SSH 私钥认证

  • -v #显示详细调试信息

交互模式常用命令

  • ls #列出远程当前目录文件

  • lls #列出本地当前目录文件

  • pwd #显示远程当前目录路径

  • lpwd #显示本地当前目录路径

  • cd 路径 #切换远程目录

  • lcd 路径 #切换本地目录

  • put 本地文件 #上传本地文件到远程当前目录

  • put -r 本地目录 #递归上传本地目录

  • get 远程文件 #下载远程文件到本地当前目录

  • get -r 远程目录 #递归下载远程目录

  • put 本地文件 远程路径 #上传到指定远程路径

  • get 远程文件 本地路径 #下载到指定本地路径

  • mkdir 目录名 #在远程创建目录

  • rm 文件名 #删除远程文件

  • rmdir 目录名 #删除远程空目录

  • rm -r 目录名 #递归删除远程目录

  • rename 旧名 新名 #远程文件或目录重命名

  • chmod 权限 文件名 #修改远程文件权限

  • help 或 ? #查看所有可用命令

  • quit 或 exit #退出 sftp 交互模式

  • !命令 #执行本地 shell 命令

3、常用命令示例

以 sftp 方式登录远程服务器

查看 sftp 主机目录和本地主机目录

上传本地文件到 sftp 主机

下载 sftp 主机文件到本地目录

进入 sftp 主机目录并删除文件

查看本地工作目录和 sftp 主机工作目录

四、ssh 免密登录

1、工作流程

SSH 免密登录基于非对称加密

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 将客户端的公钥通过 ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括 ip、用户名

  4. 服务端得到客户端的请求后,会到 authorized_keys 中查找,如果有响应的IP和用户,就会随机生成一个字符串

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

2、命令解析

在客户端生成密钥对

ssh-keygen -t rsa -P 'password' -f "\~/.ssh/id_rsa"

把公钥文件传输至远程服务器对应用户的家目录

ssh-copy-id -i \[identity_file] user@host

3、配置实践

在客户端生成密钥对

把公钥文件传输至远程服务器对应用户的家目录

测试效果,客户端主机无需输入密码即可登录远程主机

查看远程主机的 ~/.ssh/authorized_keys,里面记录了客户端主机的公钥

相关推荐
能喵烧香21 小时前
深度解析:Linux 与 Windows 超级权限账户的本质差异
linux·windows
江畔柳前堤1 天前
github实战指南01-账号配置与 SSH 密钥
运维·人工智能·深度学习·ssh·github·pyqt·信号处理
Moshow郑锴1 天前
Ubuntu 26.04 中文输入法 : fcitx5+Rime中州韵引擎
linux·运维·ubuntu
qq_163135751 天前
Linux 【04-more命令超详细教程】
linux
sevencheng7981 天前
【ADB】adb命令行常用按键模拟代码
linux·adb·模拟按键,返回键,音量键
暗影天帝1 天前
BPI-R3 Mini 刷 Yuzhii DHCPD U-Boot 教程
linux
小赖同学啊1 天前
智能连接器集群化高可用生产方案
linux·运维·人工智能
Cinema KI1 天前
Linux第一个系统程序-进度条
linux·服务器
Moshow郑锴1 天前
Ubuntu 26.04 更换阿里云源镜像
linux·运维·ubuntu
Jason_chen1 天前
Linux 6.2 串口机制深度解析:AI驱动的自适应通信与零信任串口安全架构
linux