使用SSHFS在Ubuntu 11.10上安装远程目录
本教程将介绍如何使用SSHFS从本地服务器上的远程服务器安装目录。 SSHFS( S ecure SH ell F ile S ystem)是通过SSH安全地提供文件/目录的文件系统,本地用户可以像使用本地文件/目录一样使用它们。 在本地计算机上,通过FUSE(用户空间中的文件系统)安装远程共享。 我将使用本地和远程服务器的Ubuntu 11.10。
我不会保证这将为您工作!
1初步说明
我在本教程中使用以下两个系统:
- 本地系统:
server1.example.com
,IP地址:192.168.0.100
- 远程系统:
server2.example.com
,IP地址:192.168.0.101
我将显示如何使用SSHFS作为root用户,也可以作为普通用户使用。
我使用root权限运行本教程中的所有步骤,因此请确保以root用户身份登录:
sudo su
2安装SSHFS
server1:
在本地系统上,必须按如下方式安装SSHFS:
apt-get install sshfs
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)'的真实性无法建立。
ECDSA键指纹为a2:38:f3:df:7a:6c:b6:3c:d6:c3:9c:88:93:e2:f0:63。
您确定要继续连接(是/否)?
< - 是的
root@192.168.0.101的密码:
< - server2 root password
root @ server1:〜#
我们来检查远程目录是挂载到/ backup
:
mount
root@server1:~# mount
/dev/mapper/server1-root on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda1 on /boot type ext2 (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/mapper/server1-root
29G 1015M 27G 4% /
udev 238M 4.0K 238M 1% /dev
tmpfs 99M 212K 99M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 247M 0 247M 0% /run/shm
/dev/sda1 228M 24M 193M 11% /boot
root@192.168.0.101:/home/backup
29G 1019M 27G 4% /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中。
关键指纹是:
ca:0d:df:a8:0b:18:4e:a7:f3:a2:8b:e2:81:4b:ab:f8 root@server1.example.com
关键的randomart形象是:
+ - [RSA 2048] ---- +
|
|
|
|
|
|
|
|
|
o。
。
S |
| .o =。
= o |
| .o =。
o +。
|
| =。+ o。
。
|
| @ * E .. o。
|
+ ----------------- +
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 AAAAB3NzaC1yc2EAAAADAQABAAABAQDnz2RwCZLLqBtB1rZKyN9XVfdAdt+PSpbGeLn+vlG/5nQvCSJhkRM3vpdmHPFrcYgJGtIU4gTCg6VDox2AxzJdGsrZN6zsLCndhgbs/r7N56ucuhdKSdeM/gLocnxkdQ86EECQqq42DaXgtqz3d8Q/Z+1KxYR82p7XK5ZoQG9vovNQNx9qhxIhsYIXMAbEv61bD1e0pBP9k9c1GfrZ79iRQrV+4UhHs/+Bca1YNby4gRmKIZK4FkzOYRUWYnIKVMMteC+lNho+ZMkKioo4CR3Z02hOV7ELFapqFY+6g7sj9cpLaM9gMY3rOd4EDARU+45U9yHBPsmIlA3zh4VkdnG/ 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
如果远程共享挂载。