一、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、命令简介
基于 SSH 的安全文件传输协议,用于在本地主机与远程服务器之间安全地传输记录。就是sftp(Secure File Transfer Protocol)
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 免密登录基于非对称加密:
首先在客户端生成一对密钥(ssh-keygen)
将客户端的公钥通过 ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括 ip、用户名
服务端得到客户端的请求后,会到 authorized_keys 中查找,如果有响应的IP和用户,就会随机生成一个字符串
服务端将启用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,若是一致,就允许免密码登录
2、命令解析
在客户端生成密钥对
ssh-keygen -t rsa [-P 'password'] [-f “~/.ssh/id_rsa"]
把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]host
3、配置实践
在客户端生成密钥对
把公钥文件传输至远程服务器对应用户的家目录
测试效果,客户端主机无需输入密码即可登录远程主机
查看远程主机的 ~/.ssh/authorized_keys,里面记录了客户端主机的公钥