Answers:
如果您只是以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
夹。
以普通用户身份登录后打开终端,然后运行
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
需要使用(列出用户所属的所有组)。请注意后面的两个空格字符 \
。 cut -d \ -f 1
)有2个需要的空格。我明天将测试它并尝试理解基础知识;)。
xxx:~gilles$
它问我密码,然后失败:没有这样的文件或目录。请注意,如果我写的话sudo -s
,提示是:bash-3.2 #
然后我可以列出(ls)/var/root/.ssh