SSH与SCP基本用法

itmahy
itmahy
发布于 2024-01-18 / 30 阅读
0
0

SSH与SCP基本用法

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免密登录

  1. 使用 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]-----+

  1. 使用 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.

  1. 如果没有 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
  1. 做完以上的操作,在登录的时候就不用输入密码了

$ 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
  1. HostName 远程服务器的地址

  2. User 用户名

  3. 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基本用法记录结束。


评论