通过ssh挂载远程服务器目录

AI摘要:通过SSH挂载远程服务器目录:首先配置免密SSH登录,生成SSH密钥,将公钥复制到远程服务器,然后安装sshfs并使用命令挂载远程目录。创建挂载和卸载脚本,设置桌面快捷方式实现双击自动挂载/卸载。

Powered by AISummary.

分享一个通过ssh挂载远程目录的方法,假设你的本地服务器是 A,远程服务器是 B,A通过ssh将B的目录挂载到本地。

配置免密ssh登陆远程服务器B

生成ssh密钥(本地服务器 A 上操作)

在终端中输入以下命令:

ssh-keygen -t rsa -b 4096

系统会提示你输入文件名来保存密钥,通常按 Enter 选择默认路径(~/.ssh/id_rsa)。

如果你希望设置一个密码,可以输入密码并确认;如果不想设置密码,可以直接按 Enter 跳过。

示例输出:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/your_username/.ssh/id_rsa): [Press Enter]
Enter passphrase (empty for no passphrase): [Type a passphrase or press Enter]
Enter same passphrase again: [Type it again or press Enter]
Your identification has been saved in /home/your_username/.ssh/id_rsa.
Your public key has been saved in /home/your_username/.ssh/id_rsa.pub.

确认生成密钥:
检查你是否成功生成了密钥:

ls ~/.ssh

你应该看到以下文件(如果没有,说明密钥未生成成功):

id_rsa(私钥)
id_rsa.pub(公钥)

将公钥复制到远程服务器 B

在服务器 A 上执行:

使用 ssh-copy-id 命令将生成的公钥复制到远程服务器 B。运行以下命令:

ssh-copy-id -p 22 root@B服务器ip

在执行此命令时,系统会提示你输入远程服务器 B 的用户密码(即 root 用户的密码)。输入密码后,公钥将会被添加到远程服务器 B 的 ~/.ssh/authorized_keys 文件中。

示例输出:

    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/your_username/.ssh/id_rsa.pub"
    The authenticity of host 'www.57767.top (IP地址)' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    root@www.57767.top's password: [输入远程服务器的密码]
    Number of key(s) added: 1

测试 SSH 登录(在服务器 A 上执行): 现在,你可以尝试通过 SSH 登录到远程服务器 B,而无需输入密码:

ssh -p 22 root@B服务器ip

如果配置正确,你将直接登录到远程服务器 B。

使用 sshfs 挂载B服务器目录

安装sshfs

sudo apt-get install sshfs

现在,你可以使用以下命令来挂载远程服务器 B 的目录:

sshfs -p 22 root@B服务器ip:/home/webdav /mnt/webdav

注意事项

  • 文件权限:确保 ~/.ssh 目录和密钥文件的权限设置正确,你可以在服务器 A 上运行以下命令:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
  • SSH 服务:确认远程服务器 B 的 SSH 服务正常运行,并且可以通过指定端口访问。
  • Firewall 设置:确保防火墙开放了 SSH 的端口(22)。
  • 确保本地服务器A中 /mnt/webdav 目录存在,确保远程服务器 /home/webdav 目录存在。

通过上述步骤,你应该能够在本地服务器 A 上成功设置 SSH 密钥并使用 sshfs 挂载远程服务器 B 的目录。

实现双击自动挂载/卸载

在桌面上创建两个快捷方式,一个用于挂载 SSHFS 远程目录,另一个用于卸载,可以按照以下步骤进行操作:

步骤 1:创建挂载和卸载脚本

首先,我们需要确保有两个脚本文件,一个用于挂载,另一个用于卸载。

1. 创建挂载脚本

使用以下命令创建挂载脚本 mount_sshfs.sh:

nano ~/mount_sshfs.sh

将以下内容粘贴到文件中:

#!/bin/bash

# 定义远程服务器和本地挂载点
REMOTE_USER="root"
REMOTE_HOST="www.57767.top"
REMOTE_PATH="/home/webdav"
MOUNT_POINT="/mnt/webdav"
SSH_KEY="/home/your_username/.ssh/id_rsa"
SSH_PORT="23000"

# 挂载远程目录
if ! mountpoint -q "$MOUNT_POINT"; then
    sshfs -o IdentityFile="$SSH_KEY",port="$SSH_PORT" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH" "$MOUNT_POINT"
    if [ $? -eq 0 ]; then
        notify-send "挂载成功" "远程目录已挂载到 $MOUNT_POINT"
    else
        notify-send "挂载失败" "无法挂载远程目录"
    fi
else
    notify-send "已挂载" "目录 $MOUNT_POINT 已经挂载!"
fi

2. 创建卸载脚本

使用以下命令创建卸载脚本 unmount_sshfs.sh:

nano ~/unmount_sshfs.sh

将以下内容粘贴到文件中:

#!/bin/bash

# 定义本地挂载点
MOUNT_POINT="/mnt/webdav"

# 卸载远程目录
if mountpoint -q "$MOUNT_POINT"; then
    fusermount -u "$MOUNT_POINT"
    if [ $? -eq 0 ]; then
        notify-send "卸载成功" "远程目录已卸载"
    else
        notify-send "卸载失败" "无法卸载远程目录"
    fi
else
    notify-send "未挂载" "目录 $MOUNT_POINT 没有挂载!"
fi

步骤 2:修改脚本权限

确保这两个脚本是可执行的:

chmod +x ~/mount_sshfs.sh
chmod +x ~/unmount_sshfs.sh

步骤 3:创建桌面快捷方式

1. 创建挂载快捷方式

使用以下命令创建挂载快捷方式:

nano ~/Desktop/Mount_SSHFS.desktop

将以下内容粘贴到文件中:

ini

[Desktop Entry]
Version=1.0
Type=Application
Name=挂载SSHFS
Exec=/home/your_username/mount_sshfs.sh
Terminal=false
Icon=folder-remote

2. 创建卸载快捷方式

使用以下命令创建卸载快捷方式:

nano ~/Desktop/Unmount_SSHFS.desktop

将以下内容粘贴到文件中:

ini

[Desktop Entry]
Version=1.0
Type=Application
Name=卸载SSHFS
Exec=/home/your_username/unmount_sshfs.sh
Terminal=false
Icon=folder-remote

步骤 4:修改桌面快捷方式的权限

确保这两个桌面快捷方式是可执行的:

chmod +x ~/Desktop/Mount_SSHFS.desktop
chmod +x ~/Desktop/Unmount_SSHFS.desktop

步骤 5:替换用户名

请确保在所有脚本和快捷方式中将 your_username 替换为你自己的用户名。

现在,你应该在桌面上看到两个快捷方式,分别是“挂载SSHFS”和“卸载SSHFS”。双击“挂载SSHFS”快捷方式将挂载远程目录,双击“卸载SSHFS”快捷方式将卸载远程目录。

其他注意事项

  • 确保 notify-send 命令可用,它通常是 libnotify 包的一部分,可以通过以下命令安装:
sudo apt-get install libnotify-bin

通过这些步骤,你可以方便地在桌面上创建挂载和卸载的快捷方式。

NAS
打赏
评论区
头像
文章目录

本站已运行: