SSH与SCP基本用法
SSH
SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地传输数据。它提供了加密的通道,用于远程登录和执行命令,以及安全地传输文件。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
SSH命令格式
ssh [user]@[host] [command]
--------------------------------
参数:
user: 用户名
host:远程服务器IP地址
部分command:
-p:指定远程服务器上的端口(默认22)
-v:打印更详细信息
-R listen-port:host:port :指派远程上的 port 到本地地址上的 port
-L listen-port:host:port :指派本地的 port 到达端机器地址上的 port
-N:不执行远程指令
-X:开启X11转发功能
-i:指定身份文件(预设是在使用者的家目录 中的 .ssh/identity)
-x:关闭X11转发功能
-D port 指定一个本地机器 “动态的’’ 应用程序端口转发.
-f:后台执行ssh指令
-F:指定ssh指令的配置文件
SSH正常登录
# 默认的端口号为22,当端口号为22的时候,可以直接使用下面的命令
ssh [email protected]
# 如果端口号不是22,则通过 -p(小写)指定
ssh [email protected] -p 22222
# 如果本地用户名称跟远程服务器的用户名称一样,则可以省略用户名
ssh 192.168.137.11 -p 22222
SSH免密登录
使用 ssh-keygen在本地生成密钥对
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:47VkvSjlFhKRgz/6RYdXM2EULtk9TQ65PDWJjYC5Jys user@local
The key's randomart image is:
+---[RSA 2048]----+
| ...o...X+o|
| . o+ B=Oo|
| .....ooo*=|
| o+ooo.+ .|
| .SoXo. . |
| .E X.+ . |
| .+.= . |
| .o |
| |
+----[SHA256]-----+
使用 ssh-copy-id user@remote -p port让远程服务器记住我们的公钥
$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/LENOVO/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
如果没有 ssh-copy-id,可以使用以下命令,将本地的公钥 ~/.ssh/id_rsa.pub 追加写入远程服务器的 .ssh/authorized_keys 中。也可以直接手动复制粘贴到 .ssh/authorized_keys的文件中。
ssh user@remote -p port 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
做完以上的操作,在登录的时候就不用输入密码了
$ ssh [email protected]
Last login: Tue Sep 5 09:44:37 2023 from 192.168.137.1
[root@localhost ~]#
SSH配置别名
在 ~/.ssh/目录下找到 config文件(如果不存在请新建),添加以下内容
Host itmahy
HostName 192.168.137.11
User root
IdentityFile ~/.ssh/id_rsa
HostName 远程服务器的地址
User 用户名
IdentityFile 免密登录的私钥
这样就可以使用别名直接进行登录
ssh itmahy
SCP
SCP(Secure Copy)是基于SSH协议的文件传输工具,用于在本地主机和远程主机之间安全地传输文件。跟 SSH 的差别就是 SCP 指定端口号使用的是 大写的 -P。
SCP使用方法
要使用SCP,可以在终端中输入以下命令:
scp [OPTION] [user]@[SRC_HOST]:file1 [user]@[DEST_HOST]:file2
OPTION: 一些参数
[user]@[SRC_HOST]:file1 被复制的源文件或目录
[user]@[DEST_HOST]:file2 需要复制源文件或目录到达的目录路径
# 用法
scp -P [端口号] [本地文件或者目录] 用户名@IP地址:[远程服务器目录]
scp [本地文件或者目录] [别名]:[远程服务器目录]
一些参数:
-P: 指定远程服务器SSH端口号
-p: 保留文件的修改和访问时间
-r: 递归复制文件 传输文件夹时需要指定该参数
SCP使用示例
# 本地的文件传输到远程服务器上
$ scp -P 22 book.js [email protected]:/opt
book.js 100% 2712 801.9KB/s 00:00
# 本地的文件夹传输到远程服务器上,这里使用了别名
$ scp -r images/ itmahy:/opt
favicon.ico 100% 17KB 4.9MB/s 00:00
left-logo2.png 100% 6537 742.2KB/s 00:00
logo.jpg 100% 109KB 19.1MB/s 00:00
logo.png 100% 109KB 41.3MB/s 00:00
# 将一个远程服务器的文件传输到另外一个远程服务器上
$ scp -r itmahy:/opt/images/ [email protected]:/opt
[email protected]'s password:
favicon.ico 100% 17KB 6.8MB/s 00:00
left-logo2.png 100% 6537 3.3MB/s 00:00
logo.jpg 100% 109KB 19.6MB/s 00:00
logo.png 100% 109KB 25.1MB/s 00:00
保持程序后台运行
在远程服务器上安装 yum install tmux进行会话管理,这样就不会在ssh退出时结束进程。
使用 tmux 进入到 tmux会话管理中
[root@localhost ~]# tmux
进入到了 tmux管理的会话中,之后你再运行任何东西都不会因为你退出 ssh 而被杀死。要暂时离开这个会话,可以先按下 ctrl+b 再按下 d。要恢复之前的会话,只需要执行 tmux attach,下面是没有会话的例子
[root@localhost ~]# tmux attach
no sessions
tmux 应该运行在远程的机子上,而不是本机上,否则程序在 ssh退出时依然会被杀死。
SSH与SCP基本用法记录结束。