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,里面记录了客户端主机的公钥

相关推荐
冰封之寂5 小时前
Docker 资源管理终极指南:CPU、内存与 IO 的精细化控制
linux·运维·服务器·docker·云计算
xiaoye-duck6 小时前
《Linux系统编程》Linux 系统多线程(五):<线程同步与互斥>线程互斥(上):从条件变量到生产者消费者模型详解
linux·线程
一叶龙洲8 小时前
向日葵远程Ubuntu,支持隐私屏
linux·运维·ubuntu
酷可达拉斯8 小时前
Linux操作系统-shell编程之Grep与正则表达式
linux·运维·服务器·正则表达式·centos
寒水馨9 小时前
Linux下载、安装llama.cpp-b10068(附安装包llama-b10068-bin-ubuntu-vulkan-x64.tar.gz)
linux·ubuntu·llm·llama·本地部署·llama.cpp·推理引擎
我星期八休息11 小时前
网络编程—UDP与TCP
linux·运维·网络·数据库·网络协议·tcp/ip·udp
ziguo112212 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
三84412 小时前
使用Samba/NFS实现文件共享/自动挂载共享目录/autofs自动挂载服务
linux·服务器·网络
高铭杰13 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
Jerry小杰14 小时前
运维神器|单端口搞定多台内网SSH!frp端口复用终极教程
运维·ssh