从/ var / root /移动.ssh文件夹


2

我尝试设置一个ssh密钥,以便轻松登录托管我的网站的服务器: ssh-keygen -t dsa -b 1024。 密钥(公共和私人)已保存在 /var/root/.ssh 我不喜欢,因为我必须这样做 sudo -s 在rsync之前访问私钥。

是否有任何简单安全的方法来移动ssh文件夹 /var/root/.ssh 到我的用户文件夹,这样即使不是root也可以使用密钥?移动它的位置是什么?新手用于搬迁的命令是什么? (对于mac os 10.10) 谢谢。

Answers:


2

如果您只是以root用户身份创建DSA密钥,那么最安全的做法是(从终端作为您自己的用户):

mkdir -p ~/.ssh
sudo cp -av /var/root/.ssh/id_dsa /var/root/.ssh/id_dsa.pub /Users/$USER/.ssh/
chown -v $USER: ~/.ssh/id_dsa*
chmod -v 600 ~/.ssh/id_dsa

这将创建一个 .ssh homedir中的配置目录( mkdir -p 如果,不会发出响亮的声音 ~.ssh 已经存在,并且不会做任何事情),从中复制公钥和私钥文件 root 你自己的homedir,然后在你的文件上设置正确的权限和所有权。

这是非破坏性的(你没有移动任何东西,你只是在复制);一旦你开心,密钥对就可以让你成为普通登录用户成功连接到你的远程主机,你可以 sudo rm -fv /var/root/.ssh/id_dsa /var/root/.ssh/id_dsa.pub 这也不会影响任何一个帐户中的任何其他文件 .ssh 夹。


2

以普通用户身份登录后打开终端,然后运行

mkdir ~/.ssh
sudo sh -c 'mv /var/root/.ssh/* /Users/'$USER'/.ssh/'
sudo chown $USER ~/.ssh/*
sudo chgrp $(groups | cut -d \  -f 1) ~/.ssh/*
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

这假设您没有像通常使用的那样创建任何ssh密钥对(因此还没有文件。) ~/.ssh )。

PS:一些解释:

  • 第一 sudo 将root的.ssh文件夹的内容移动到当前用户的内容中。需要通过调用子shell来完成( sh -c )因为通配符部分( /var/root/.ssh/* )只能在之后工作 sudo 已将当前用户更改为root。 $USER 是包含当前用户名称的环境变量
  • 第三 sudo 将复制文件的组所有权更改为当前用户的主要组。由于没有方便的环境变量,输出 groups 需要使用(列出用户所属的所有组)。请注意后面的两个空格字符 \

我理解计划,Patrix,但我不能让第2行工作:登录时 xxx:~gilles$ 它问我密码,然后失败:没有这样的文件或目录。请注意,如果我写的话 sudo -s,提示是: bash-3.2 # 然后我可以列出(ls) /var/root/.ssh
Gilles

啊,开玩笑。编辑,请再试一次。
nohillside

看起来它是成功的帖子。在我第一次尝试复制命令时,我失败了,因为我没有注意语法( cut -d \ -f 1 )有2个需要的空格。我明天将测试它并尝试理解基础知识;)。
Gilles

我已经使用过这个解决方案了,但是跟随(未经测试)神经的回答似乎更安全,至少对于盲人新手而言。
Gilles
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.