安装远程目录与SSHFS在Debian挤压

使用SSHFS在Debian Squeeze上安装远程目录

本教程将介绍如何使用SSHFS从本地服务器上的远程服务器安装目录。 SSHFS( S ecure SH ell F ile S ystem)是通过SSH安全地提供文件/目录的文件系统,本地用户可以像使用本地文件/目录一样使用它们。 在本地计算机上,通过FUSE(用户空间中的文件系统)安装远程共享。 我将为本地和远程服务器使用Debian Squeeze。

我不会保证这将为您工作!

1初步说明

我在本教程中使用以下两个系统:

  • 本地系统: server1.example.com ,IP地址: 192.168.0.100
  • 远程系统: server2.example.com ,IP地址: 192.168.0.101

我将显示如何使用SSHFS作为root用户,也可以作为普通用户使用。

2安装SSHFS

server1:

在本地系统上,必须按如下方式安装SSHFS:

apt-get install sshfs

之后,确保加载了保险丝内核模块:

lsmod | grep fuse
root@server1:~# lsmod | grep fuse
fuse                   50625  1
root@server1:~#

3使用SSHFS作为根

server1:

现在我想将远程目录/ home / backup (在server2上由server2的root用户拥有)挂载到本地/备份目录下,作为本地root用户。

首先加入保险丝组的根:

adduser root fuse

创建本地/备份目录,并确保它由root拥有(应该是以root身份运行这些命令):

mkdir /backup
chown root /backup

然后将remote / home / backup目录挂载到/ backup

sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

(您可以使用远程系统的完整路径,如上所述,或相对路径,如下所示:

sshfs -o idmap=user root@192.168.0.101:backup /backup

如果使用相对路径,该路径是相对于远程用户的主目录,因此在这种情况下,它将是/ root / backup 。 你甚至可以省略远程目录,如下所示:

sshfs -o idmap=user root@192.168.0.101: /backup

在这种情况下,这将转换为远程用户的主目录 - / root

-o idmap = user使得本地和远程系统使用不同的用户ID无关紧要 - 远程用户拥有的文件也由本地用户拥有。 如果您不使用此功能,您可能会收到权限问题。

如果第一次连接到远程主机,您将看到有关远程主机的真实性的警告(如果您在使用ssh或scp之前已连接到远程主机,则不会看到警告)。 在任何情况下,将要求您提供server2的根密码:

root @ server1:〜#sshfs -o idmap = user root@192.168.0.101:/ home / backup / backup
主机'192.168.0.101(192.168.0.101)'的真实性无法建立。
RSA钥匙指纹为25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e。
您确定要继续连接(是/否)? < - 是的
root@192.168.0.101的密码: < - server2_root_password
root @ server1:〜#

我们来检查远程目录是挂载到/ backup

mount
root@server1:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
root@192.168.0.101:/home/backup on /backup type fuse.sshfs (rw,nosuid,nodev,max_read=65536)
root@server1:~#
df -h
root@server1:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1              29G  1.2G   26G   5% /
tmpfs                 249M     0  249M   0% /lib/init/rw
udev                  244M  100K  244M   1% /dev
tmpfs                 249M     0  249M   0% /dev/shm
root@192.168.0.101:/home/backup
                       29G  1.2G   27G   5% /backup
root@server1:~#

看起来不错!

要卸载共享,运行

fusermount -u /backup

3.1创建私有/公钥对在server1上

当然,我们不想在每次尝试安装远程共享时输入密码。 因此,我们创建一个私钥/公钥对,并将公钥传输到server2 ,以便我们不再需要输入密码。

server1:

server1.example.com上创建私钥/公钥对:

ssh-keygen

root @ server1:〜#ssh-keygen
生成公共/私有rsa密钥对。
输入要保存密钥的文件(/root/.ssh/id_rsa): < - ENTER
输入密码(无密码为空): < - ENTER
再次输入相同的密码: < - ENTER
您的身份已保存在/root/.ssh/id_rsa中。
您的公钥已保存在/root/.ssh/id_rsa.pub中。
关键指纹是:
b4:22:48:21:99:72:65:3e:1d:93:6f:9a:5c:5f:70:61 root@server1.example.com
关键的randomart形象是:
+ - [RSA 2048] ---- +
| .o..o o E. |
| + .. + ..o ... |
| ... o ... o |
| 。+。 |
| ... = S。 |
| 。+。 |
| |
| |
| |
+ ----------------- +
root @ server1:〜#

重要的是,您不要输入密码,否则在没有人工交互的情况下安装将无法正常工作,因此只需按ENTER键

接下来,我们将公钥复制到server2.example.com

ssh-copy-id -i $HOME/.ssh/id_rsa.pub root@192.168.0.101

现在检查server2的 server1的公钥是否正确传输:

server2:

cat $HOME/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVdvyYlzgTkjZhDK8S+EZ1fVU/lvLlayKya/u+NY9w6WerYlCxX6nMN9beTXddmlTXg6uXGYAEEnFA36JlOcXz0cr7D8KEzW1vwRtZFJzZ/oH71aDKgrY7M4yRaCsKdElrF+pbq1JT84pEmlOKluVlqGSGvn1Y0W/vrDgl9/j852tkqqIwUg+RjxRbxf13IwWhNOrIiNAFnxhKT9kMVXl9m5Gv5EYk130JNC/uSKTo8uxk5Z+Rq4m7vaIqx0hk8zfLodZ5h4vDnUpwjIhEH+L+3OogeC5bm4zbAYTf4L/5dfobuSsWF88kO/6jAurKmoHShSA5n1YyJoE6ODAgvbpb root@server1.example.com

现在回到server1上 ,尝试再次挂载远程共享(确保在运行命令之前卸载它):

server1:

sshfs -o idmap=user root@192.168.0.101:/home/backup /backup

如果一切顺利,您不应该被提示输入密码:

root@server1:~# sshfs -o idmap=user root@192.168.0.101:/home/backup /backup
root@server1:~#

3.2在引导时自动安装远程共享

server1:

如果您不想手动装载远程共享,则可能会在系统引导时自动挂载(如果您遵循第3.1章,否则将无法自动挂接,因为您将被要求输入密码)。 通常,我们将修改/ etc / fstab来实现这一点,但是不幸的是,在引导过程中处理/ etc / fstab时,网络尚未启动,这意味着无法挂载远程共享。

为了规避这一点,我们只需要将mount命令添加到/etc/rc.local ,这是在引导过程中要处理的最后一个文件,当时网络已经启动并运行:

vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/usr/bin/sshfs -o idmap=user root@192.168.0.101:/home/backup /backup
exit 0

您可以通过简单地重新启动系统来测试它:

reboot

重新启动后,您可以检查

mount

df -h

如果远程共享挂载。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏