`
missall
  • 浏览: 127932 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

同主目录多用户通过ssh进行密钥登陆

阅读更多

  我们以前已经提过如何在客户端创建密钥后,拷贝到服务端,今后就可以使用该密钥进行无密码认证的登陆了。如果您已经忘了?可以看看这里:[原]putty使用密钥登陆OpenSSH 。在这情况下,都是指每个用户自己去登陆服务器。但在今天的项目实施中,遇是这样的情况:
    作为ssh客户端的机器,有多个用户,他们属于同一个主目录,并且都需要进行密钥验证。而私钥id_rsa的权限必须为600,其他用户不能访问。我们就需要用ssh的-i参数解决这问题。

一、系统环境

引用
操作系统:Asianux 3.0
应用软件:OpenSSH v4.3p2
客户端和服务端同一IP地址:192.168.48.128
服务端用户:hyphen(以该用户模拟服务端)
用户1:test、主目录:/home/test、宿组:test
用户2:user、主目录:/home/test、宿组:test


二、单用户密钥登陆
为了方便说明,这里先做个单用户使用密钥登陆sshd服务器的过程。以test用户为例。
1、客户端
创建密钥:

引用
[test@asianux3 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
15:b0:02:35:b4:0d:d3:fe:9c:e8:56:e1:a6:06:8c:e9 test@asianux3


然后拷贝公钥到服务器上:

引用
[test@asianux3 ~]$ scp .ssh/id_rsa.pub hyphen@192.168.48.128:~/.ssh/authorized_keys
The authenticity of host '192.168.48.128 (192.168.48.128)' can't be established.
RSA key fingerprint is 19:05:03:5c:ac:b5:9d:ba:15:5a:46:7e:32:0e:b8:79.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.48.128' (RSA) to the list of known hosts.
hyphen@192.168.48.128's password:
id_rsa.pub  


2、服务端
在服务端上创建的authorized_keys默认权限是644,这不能满足安全要求,需要改为600:

引用
[hyphen@asianux3 ~]$ ll ~/.ssh/authorized_keys
-rw-r--r-- 1 hyphen hyphen 395 11-10 13:32 /home/hyphen/.ssh/authorized_keys
[hyphen@asianux3 ~]$ chmod 600 ~/.ssh/authorized_keys
[hyphen@asianux3 ~]$ ll ~/.ssh/authorized_keys
-rw------- 1 hyphen hyphen 395 11-10 13:32 /home/hyphen/.ssh/authorized_keys


3、测试
使用test用户,使用密钥进行登陆:

引用
[test@asianux3 ~]$ ssh hyphen@192.168.48.128
Last login: Mon Nov 10 12:34:20 2008 from 192.168.48.128
[hyphen@asianux3 ~]$


测试成功。

三、多用户登陆
1、权限问题
user用户的信息如下:

引用
[user@asianux3 ~]$ pwd
/home/test
[user@asianux3 ~]$ id
uid=514(user) gid=513(test) groups=513(test)


由于私钥权限是600的,user用户无法使用它进行登陆:

引用
[user@asianux3 ~]$ ll ~/.ssh/id_rsa
-rw------- 1 test test 1675 11-10 12:40 /home/test/.ssh/id_rsa
[user@asianux3 ~]$ ssh hyphen@192.168.48.128
Enter passphrase for key '/home/test/.ssh/id_rsa':
hyphen@192.168.48.128's password:


2、解决
使用test用户把私钥文件拷贝成另一个文件:

引用
[test@asianux3 ~]$ cd .ssh/
[test@asianux3 .ssh]$ cp id_rsa common_id_rsa
[test@asianux3 .ssh]$ chmod 640 common_id_rsa
[test@asianux3 .ssh]$ ll common_id_rsa
-rw-r----- 1 test test 1675 11-10 13:43 common_id_rsa


user用户使用ssh的-i参数指定私钥文件来登陆:

引用
[user@asianux3 ~]$ ssh -i .ssh/common_id_rsa hyphen@192.168.48.128
Last login: Mon Nov 10 13:35:29 2008 from 192.168.48.128
[hyphen@asianux3 ~]$


登陆成功。

四、其他问题
1、修改私钥id_rsa的权限
如果您看到id_rsa的私钥是600,然后希望其他用户可以使用该私钥,而改为640权限的话。那其他用户确实可以使用密钥登陆远端服务器的。

引用
[test @asianux3 .ssh]$ chmod 640 id_rsa
[test@asianux3 .ssh]$ ll id_rsa
-rw-r----- 1 test test 1675 11-10 12:40 id_rsa
[user @asianux3 ~]$ ssh hyphen@192.168.48.128
Last login: Mon Nov 10 13:44:35 2008 from 192.168.48.128
[hyphen@asianux3 ~]$


但原来的test用户就会因权限问题给挡住了:

引用
[test@asianux3 .ssh]$ ssh hyphen@192.168.48.128
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/home/test/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

bad permissions: ignore key: /home/test/.ssh/id_rsa
Enter passphrase for key '/home/test/.ssh/id_rsa':
hyphen@192.168.48.128's password:


解决方式还是和上面的一样啦,另外给一个600权限的私钥给test使用:

引用
[test@asianux3 .ssh]$ ll common_id_rsa
-rw-r----- 1 test test 1675 11-10 13:43 common_id_rsa
[test@asianux3 .ssh]$ chmod 600 common_id_rsa
[test@asianux3 .ssh]$ ssh -i common_id_rsa hyphen@192.168.48.128
Last login: Mon Nov 10 13:48:06 2008 from 192.168.48.128
[hyphen@asianux3 ~]$


成功了吧。O(∩_∩)O
※ 我觉得,最好还是保留原用户的密钥id_rsa权限,而另外给其他用户私钥清晰点咯。

2、客户端钥匙改变
linux上的ssh客户端,在登陆服务端时,会把自己的公钥写入~/.ssh/known_hosts文件中:

引用
[test@asianux3 .ssh]$ ssh hyphen@192.168.48.128
The authenticity of host '192.168.48.128 (192.168.48.128)' can't be established.
RSA key fingerprint is 19:05:03:5c:ac:b5:9d:ba:15:5a:46:7e:32:0e:b8:79.
Are you sure you want to continue connecting (yes/no)? yes


若后来因其他原因(如使用新的私钥等),客户端的公钥被修改了,在登陆服务器时,就会包错:

引用
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
19:05:03:5c:ac:b5:9d:ba:15:5a:46:7e:32:0e:b8:79.
Please contact your system administrator.
Add correct host key in /home/test/.ssh/known_hosts to get rid of this message.
Offending key in /home/test/.ssh/known_hosts:1
RSA host key for 192.168.48.128 has changed and you have requested strict checking.
Host key verification failed.


这时,请把客户端的~/.ssh/known_hosts文件中对应的一行公钥删除,或直接删除该文件。

 

原文地址 http://www.linuxfly.org/read.php/261.htm

分享到:
评论

相关推荐

    [原]同主目录多用户通过ssh进行密钥登陆[归类].pdf

    在IT行业中,尤其是软件开发领域,安全的远程访问是至关重要的。...总之,通过SSH密钥对实现多用户登录,既保证了安全性,又兼顾了便利性。在实际操作中,务必遵循最佳实践,确保每个环节都符合安全标准。

    服务器间通过ssh使用密钥对实现无密码登录solaris.doc

    在每台服务器上,我们首先需要生成一对SSH密钥,包括一个私钥(private key)和一个公钥(public key)。私钥用于身份验证,公钥则用于识别你的主机。在命令行中,你可以使用`ssh-keygen`命令生成DSA或RSA类型的密钥...

    linux-远程管理SSH密钥以控制对主机的访问

    对于多用户环境,你可能需要集中管理SSH密钥。一种方法是使用密钥代理(Key Agent,如SSH-Agent),它能记住私钥,从而免去每次登录时手动加载私钥的步骤。启动SSH-Agent并在shell中添加密钥后,其他SSH连接会自动...

    免密码自动登录SSH(免密登陆SSH)_Shell_下载.zip

    步骤一:生成SSH密钥对 在本地主机上,使用`ssh-keygen`命令生成RSA或ED25519类型的密钥对。例如: ``` ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 这会在`~/.ssh`目录下创建`id_rsa`(私钥)和`id...

    SSH.rar_SSH登陆_ssh_ssh登录界面

    这个"SSH.rar_SSH登陆_ssh_ssh登录界面"的压缩包文件内容可能包含了一组有关SSH登录界面的练习题或者教程,旨在帮助用户理解和掌握SSH的使用。 SSH的主要功能是加密网络通信,确保数据在传输过程中不被窃取或篡改。...

    ssh工程目录(有用) 2

    这个"ssh工程目录(有用) 2"可能是指一个包含有关SSH配置、项目文件或者示例的压缩包,其内容可能对学习或管理SSH连接非常有价值。在这里,我们将深入探讨SSH的相关知识点。 首先,SSH的主要功能是加密网络服务,...

    skm:一个简单而强大的SSH密钥管理器

    它可以帮助您轻松管理多个SSH密钥! 特征 创建,列出,删除您的SSH密钥 通过别名管理所有SSH密钥 选择并设置默认的SSH密钥 通过别名显示公钥 将默认的SSH密钥复制到远程主机 重命名SSH密钥别名 备份和还原所有SSH...

    shell自动化部署批量建立用户和批量SSH配置

    在这个场景中,脚本将用来创建用户、分配权限并配置SSH密钥对,以便用户之间可以无需输入密码进行相互访问。 批量建立用户通常涉及`useradd`或`adduser`命令。`useradd`是系统管理员用于创建新用户的工具,而`...

    详解SSH如何配置key免密码登录

    3. **多用户共享密钥** 如果多个用户需要使用同一套密钥对登录,可以将公钥添加到每个用户的`.ssh/authorized_keys`文件中。但是需要注意,这种方式可能会降低安全性。 通过以上内容的详细介绍,相信读者已经掌握...

    ssh2学习视频

    8. **SSH代理和密钥管理**:了解SSH代理(如ssh-agent)的使用,以及如何通过密钥管理工具(如gpg-agent或keychain)方便地管理多个SSH密钥。 9. **SSH版本差异**:对比SSH1和SSH2的不同,强调SSH2的优势,如更强的...

    linuxssh无密码登陆

    这种方法在多台服务器之间进行自动化运维或脚本操作时非常有用,提高了工作效率并降低了出错的可能性。但请注意,无密码登录虽然方便,也可能带来安全风险,因此建议只在信任的网络环境中使用,并定期更新密钥对以...

    ssh注册登录项目

    8. **密钥管理**:对于大型组织,可能需要使用密钥管理系统,如SSO(单点登录)集成,以集中管理和分发SSH密钥。 9. **SSH代理**:SSH代理(SSH-Agent)可以缓存用户的私钥,避免频繁输入密码,同时允许跨多个会话...

    redhat5.4 ssh 服务配置

    总的来说,RHEL5.4中的SSH服务配置涉及多个方面,包括但不限于服务的启停、配置文件的修改、用户权限的设定以及密钥对认证的建立。通过合理配置和使用SSH,可以确保在远程管理服务器时的数据安全和高效性。

    Linux下的SSH(二).pdf

    总的来说,了解和掌握Linux下的SSH密钥管理及配置,对于系统管理员来说至关重要,因为它直接影响到系统的安全性和远程访问的便捷性。正确地使用和配置SSH,能有效防止中间人攻击,提高网络通信的安全水平。同时,...

    用于ssh文件同步,kotlin

    JSch是一个Java实现的SSH2库,它允许用户连接到SSH服务器,执行命令,打开shell,以及通过SFTP(SSH File Transfer Protocol)进行文件传输。在Kotlin中,我们可以创建一个JSch实例,设置必要的配置(如用户名、密码...

    大数据分析技术:配置SSH免密登陆.pptx

    SSH免密登陆则是SSH的一种高级特性,允许用户在不同的服务器之间进行身份验证时无需输入密码,极大地提高了工作效率。以下是关于SSH免密登陆的详细配置步骤及其实现原理。 免密登录原理: SSH免密登陆基于非对称...

    SSH配置示例

    为了提高安全性,可以定期更换SSH密钥,限制失败尝试次数,使用更强的算法,或者配置密钥认证代理(Keychain)。 8. **SSH配置文件** 个人级别的SSH配置位于`~/.ssh/config`,在这里可以指定主机别名、端口、用户...

    好用的ssh工具

    最后,`.tar.gz`是一个压缩格式,意味着这个文件是使用tar命令打包后,再用gzip进行压缩的,这样的文件通常包含多个文件或目录,可以方便地存储和传输。 标签"ssh"进一步确认了我们的讨论焦点在于SSH工具和技术。 ...

    有关ssh一对一单向关联以及登陆的分页小例子

    在服务器上,每个用户的家目录下的 .ssh 目录内有一个 authorized_keys 文件,该文件包含了允许连接到该用户的公钥。当客户端尝试连接时,它会用私钥进行身份验证,服务器则通过对比 authorized_keys 文件中的公钥来...

    ssh加密访问服务器

    1. 创建`.ssh`目录:在用户的主目录下,使用`mkdir -p .ssh`创建一个隐藏的`.ssh`目录。 2. 设置权限:确保`.ssh`目录具有适当的权限,运行`chmod 700 .ssh`。 3. 添加公钥:将公钥追加到`authorized_keys`文件,...

Global site tag (gtag.js) - Google Analytics