在 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
,你可能需要联系远程主机的管理员进行配置。
希望这些步骤能帮助你解决问题。如果有任何问题,欢迎随时提问。