【软件工具-Linux】scp命令和ssh命令

一、scp命令

scp(Secure Copy)是 Linux 系统中的一个命令,用于在不同主机之间通过 SSH 协议安全地复制文件或目录。它可以在本地主机和远程主机之间、或在两台远程主机之间传输文件。

scp 的基本语法

scp [选项] 源路径 目标路径

常用选项

  • -r:递归地复制整个目录。
  • -P port:指定远程主机的 SSH 端口(默认是 22)。
  • -i identity_file:指定 SSH 密钥文件。
  • -C:启用压缩传输。
  • -v:详细模式,显示进程中的详细信息。
  • -p:保留文件的修改时间、访问时间和权限。

scp 的常见用法

1. 从本地复制文件到远程主机
scp /path/to/local/file username@remote_host:/path/to/remote/directory/

例如,将本地的 file.txt 复制到远程主机 /home/user/ 目录下:

scp file.txt user@192.168.1.10:/home/user/
2. 从远程主机复制文件到本地
scp username@remote_host:/path/to/remote/file /path/to/local/directory/

例如,将远程主机上的 file.txt 复制到本地主机的 /home/user/ 目录下:

scp user@192.168.1.10:/home/user/file.txt /home/user/
3. 从本地复制目录到远程主机

使用 -r 选项递归复制整个目录:

scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory/

例如,将本地的 mydir 目录复制到远程主机的 /home/user/ 目录下:

scp -r mydir user@192.168.1.10:/home/user/
4. 从远程主机复制目录到本地
scp -r username@remote_host:/path/to/remote/directory /path/to/local/directory/

例如,将远程主机上的 mydir 目录复制到本地的 /home/user/ 目录下:

scp -r user@192.168.1.10:/home/user/mydir /home/user/
5. 在两台远程主机之间复制文件
scp username1@remote_host1:/path/to/remote/file username2@remote_host2:/path/to/remote/directory/

例如,将 remote_host1 上的 file.txt 复制到 remote_host2/home/user/ 目录下:

scp user1@192.168.1.10:/home/user/file.txt user2@192.168.1.20:/home/user/
6. 指定 SSH 端口

如果远程主机的 SSH 服务运行在非默认端口,可以使用 -P 选项指定端口:

scp -P 2222 /path/to/local/file username@remote_host:/path/to/remote/directory/

例如,将本地文件 file.txt 复制到使用 2222 端口的远程主机:

scp -P 2222 file.txt user@192.168.1.10:/home/user/

注意事项

  • 权限问题:确保你有权限访问和写入源路径和目标路径。
  • 网络速度scp 使用 SSH 传输,因此传输速度取决于网络连接和远程主机的配置。
  • 安全性scp 是通过 SSH 加密传输的,通常比 ftprsh 更安全。

scp 是一个非常有用的工具,适用于在不同主机之间安全地传输文件和目录。

二、ssh命令

ssh(Secure Shell)是一种用于在计算机之间安全访问和管理远程主机的网络协议和相关命令。它通过加密连接提供了一种安全的方式,允许用户在不安全的网络中进行安全的通信和数据传输。

ssh 命令的作用

ssh 命令的主要作用是通过加密的网络连接远程登录到另一台计算机(远程主机),从而可以在远程主机上执行命令、管理系统、传输文件等。它是系统管理员和开发人员管理远程服务器的常用工具。

ssh 的基本语法

ssh [选项] 用户名@远程主机

常用选项

  • -p port:指定远程主机的 SSH 端口(默认是 22)。
  • -i identity_file:指定 SSH 私钥文件。
  • -L local_port:remote_address:remote_port:设置本地端口转发。
  • -R remote_port:local_address:local_port:设置远程端口转发。
  • -N:只进行端口转发,不执行远程命令。
  • -T:禁用伪终端分配,通常用于脚本。
  • -X:启用 X11 转发,用于图形界面应用的远程显示。
  • -v:详细模式,显示连接过程中的调试信息。

ssh 的常见用法

1. 连接到远程主机

最基本的用法是连接到远程主机并打开一个交互式 shell 会话:

ssh user@remote_host

例如,使用用户名 user 连接到 IP 地址为 192.168.1.10 的远程主机:

ssh user@192.168.1.10
2. 指定 SSH 端口

如果远程主机的 SSH 服务运行在非默认端口(例如 2222),可以使用 -p 选项指定端口:

ssh -p 2222 user@192.168.1.10
3. 使用 SSH 密钥文件连接

如果你使用 SSH 密钥进行身份验证,可以使用 -i 选项指定密钥文件:

ssh -i /path/to/private_key user@192.168.1.10
4. 执行远程命令

你可以在连接到远程主机后直接执行命令,而不进入交互式 shell 会话:

ssh user@192.168.1.10 "ls -l /var/www"

这个命令会在远程主机上列出 /var/www 目录的内容,并将结果显示在本地终端上。

5. 端口转发

SSH 可以用于创建安全的端口转发。例如,将本地计算机的端口 8080 转发到远程主机的端口 80:

ssh -L 8080:localhost:80 user@192.168.1.10

这个命令允许你通过访问 localhost:8080 来间接访问远程主机的 web 服务(端口 80)。

6. 使用代理跳转

如果你需要通过中间主机(跳板机)连接到目标主机,可以使用 -J 选项:

ssh -J user@jump_host user@target_host

这个命令通过 jump_host 中转连接到 target_host

7. 使用 X11 转发

通过 SSH 连接远程主机时,如果需要运行图形界面应用程序并在本地主机显示,可以使用 -X 选项启用 X11 转发:

ssh -X user@192.168.1.10

连接后,运行的图形界面应用程序会显示在你的本地计算机上。

SSH 配置文件

你可以在 ~/.ssh/config 文件中配置常用的 SSH 连接参数,这样就不需要每次都输入所有选项。例如:

Host myserver
    HostName 192.168.1.10
    User user
    Port 2222
    IdentityFile ~/.ssh/id_rsa

配置好后,你可以简单地使用以下命令连接:

ssh myserver

总结

  • ssh 是一种用于在计算机之间建立加密连接的协议和命令,通常用于远程登录、执行命令、传输文件等。
  • 基本用法:远程登录、指定端口、使用密钥文件、执行远程命令。
  • 高级用法:端口转发、代理跳转、X11 转发。

ssh 是 Linux 系统中非常强大且常用的工具,广泛用于服务器管理和安全通信。

三、scp /path/to/local/file username@remote_host:/path/to/remote/directory/这个步骤是不是和inux交互要输入密码?

是的,使用 scp 命令复制文件时,如果你没有设置免密码登录,那么系统会提示你输入远程主机的用户密码。

具体流程如下:

  1. 你运行 scp 命令,比如:

    scp /path/to/local/file username@remote_host:/path/to/remote/directory/
    
  2. 系统会连接到远程主机 remote_host,并提示你输入 username 用户的密码:

    username@remote_host's password:
    
  3. 你输入密码后,文件开始传输。

如何避免每次都输入密码

如果你不想每次都输入密码,可以通过配置 SSH 密钥来实现免密码登录。以下是设置步骤:

1. 生成 SSH 密钥对

在本地主机上生成 SSH 密钥对(如果还没有的话):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

按回车接受默认路径(通常是 ~/.ssh/id_rsa),然后根据需要设置或不设置密钥的密码。

2. 将公钥复制到远程主机

使用 ssh-copy-id 命令将公钥复制到远程主机:

ssh-copy-id username@remote_host

系统会提示你输入远程主机的用户密码。成功后,你的公钥会被添加到远程主机的 ~/.ssh/authorized_keys 文件中。

3. 免密码登录

完成上述步骤后,你就可以通过 sshscp 命令免密码登录到远程主机。

例如:

scp /path/to/local/file username@remote_host:/path/to/remote/directory/

此时不会再提示你输入密码,文件会直接开始传输。

总结

  • 默认情况下:使用 scp 命令时,系统会要求你输入远程主机的用户密码。
  • 设置 SSH 密钥:可以通过设置 SSH 密钥对实现免密码登录,这样就不需要每次使用 scp 命令时都输入密码。

这种方式不仅方便,还提高了安全性,因为你不再需要通过明文输入密码。

  • 35
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值