使用 sshfs 工具将远程 Linux 主机的文件夹挂载到本地

在 Ubuntu 上,你可以使用 sshfs 工具将远程 Linux 主机的文件夹挂载到本地,从而通过命令行访问远程文件系统。以下是详细的步骤:

1. 安装 sshfs

首先,确保你已经安装了 sshfs。如果没有安装,可以使用以下命令进行安装:

sh 复制代码
sudo apt update
sudo apt install sshfs

2. 创建挂载点

在本地创建一个目录作为挂载点。例如,创建一个名为 remote_folder 的目录:

sh 复制代码
mkdir ~/remote_folder

3. 挂载远程文件夹

使用 sshfs 命令将远程主机的文件夹挂载到本地创建的目录。假设远程主机的 IP 地址是 192.168.1.100,远程文件夹路径是 /path/to/remote/folder,远程主机的用户名是 user,你可以使用以下命令进行挂载:

sh 复制代码
sshfs user@192.168.1.100:/path/to/remote/folder ~/remote_folder

4. 验证挂载

挂载成功后,你可以通过访问 ~/remote_folder 来访问远程主机的文件夹。例如:

sh 复制代码
ls ~/remote_folder

5. 卸载远程文件夹

当你不再需要访问远程文件夹时,可以使用 fusermount 命令卸载它:

sh 复制代码
fusermount -u ~/remote_folder

6. (可选)设置无密码访问

为了方便使用,你可以设置无密码 SSH 访问。这需要在本地生成 SSH 密钥并将其添加到远程主机的 ~/.ssh/authorized_keys 文件中。

生成 SSH 密钥

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

sh 复制代码
ssh-keygen -t rsa

按回车键接受默认文件位置和空密码。

将公钥添加到远程主机

将生成的公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中:

sh 复制代码
ssh-copy-id user@192.168.1.100

7. (可选)自动挂载

如果你希望在系统启动时自动挂载远程文件夹,可以编辑 /etc/fstab 文件。添加以下行:

sh 复制代码
user@192.168.1.100:/path/to/remote/folder  /home/your_username/remote_folder  fuse.sshfs  defaults,_netdev,IdentityFile=/home/your_username/.ssh/id_rsa  0  0

确保将 user、192.168.1.100、/path/to/remote/folder 和 /home/your_username/remote_folder 替换为实际的值。

完整的命令序列

以下是完整的命令序列,供参考:

sh 复制代码
# 安装 sshfs
sudo apt update
sudo apt install sshfs

# 创建挂载点
mkdir ~/remote_folder

# 挂载远程文件夹
sshfs user@192.168.1.100:/path/to/remote/folder ~/remote_folder

# 验证挂载
ls ~/remote_folder

# 卸载远程文件夹
fusermount -u ~/remote_folder

# (可选)生成 SSH 密钥
ssh-keygen -t rsa

# (可选)将公钥添加到远程主机
ssh-copy-id user@192.168.1.100

# (可选)编辑 /etc/fstab 文件
sudo nano /etc/fstab

你遇到的问题是因为远程主机 172.21.42.10 只支持 ssh-rsa 和 ssh-dss 这两种主机密钥类型,而你的本地 SSH 客户端可能默认使用了其他类型的密钥(例如 ed25519 或 ecdsa)。为了解决这个问题,你可以通过配置 SSH 客户端来允许使用 ssh-rsa 和 ssh-dss 密钥类型。

解决方法

1. 修改 SSH 客户端配置

你可以通过编辑 SSH 客户端的配置文件来允许使用 ssh-rsa 和 ssh-dss 密钥类型。编辑 ~/.ssh/config 文件(如果不存在则创建):

sh 复制代码
nano ~/.ssh/config

在文件中添加以下内容:

sh 复制代码
Host 172.21.42.10
    HostKeyAlgorithms +ssh-rsa,ssh-dss
    PubkeyAcceptedKeyTypes +ssh-rsa,ssh-dss

保存并关闭文件。

2. 重新尝试 ssh-copy-id

再次尝试将公钥复制到远程主机:

sh 复制代码
ssh-copy-id naura@172.21.42.10

完整的命令序列

以下是完整的命令序列,供参考:

sh 复制代码
# 编辑 SSH 客户端配置文件
nano ~/.ssh/config

# 添加以下内容
Host 172.21.42.10
    HostKeyAlgorithms +ssh-rsa,ssh-dss
    PubkeyAcceptedKeyTypes +ssh-rsa,ssh-dss

# 保存并关闭文件

# 重新尝试将公钥复制到远程主机
ssh-copy-id naura@172.21.42.10

验证

如果一切顺利,你应该能够成功将公钥复制到远程主机。你可以通过以下命令验证是否可以无密码登录:

sh 复制代码
ssh naura@172.21.42.10

如果能够成功登录且不需要输入密码,说明配置已经生效。

其他注意事项

  • 安全性 :允许使用 ssh-rsa 和 ssh-dss 密钥类型可能会降低安全性,因为这些密钥类型被认为不如 ed25519 和 ecdsa 安全。如果你对安全性有较高要求,建议在确保远程主机支持更安全的密钥类型后,再进行配置。
  • 远程主机配置 :如果远程主机的 SSH 服务器配置不允许使用 ssh-rsa 和 ssh-dss,你可能需要联系远程主机的管理员进行配置。

希望这些步骤能帮助你解决问题。如果有任何问题,欢迎随时提问。

相关推荐
中云DDoS CC防护蔡蔡2 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
2301_780789662 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
欧米欧2 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery3 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
qetfw3 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
前端精髓4 小时前
调用大模型API
运维·服务器·microsoft
星融元asterfusion4 小时前
工业网络升级实战:100G 双轨 Leaf-Spine 架构破解高并发出货网络瓶颈
网络·架构·spine
Da Da 泓4 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
云和数据.ChenGuang5 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain