在日常工作中,经常遇到需要切换服务器、切换账号这样一类的操作。快速的实现服务器、账号的快速切换可有效的提高我们的工作效率。
登录(切换)服务器
登入服务器首先需要知道知道目标服务器的IP地址(如果是内网登录用 “服务器ID”也是可以的)、在目标服务器上的用户ID、用户密码。
#在cmd下或者MobaXterm中,用ssh即可登入192.168.0.7(server7)服务器,wangzq是我在server7服务器上的账号。
ssh wangzq@192.168.0.7
ssh wangzq@server7
重点使用的是SSH协议的远程登录功能。
SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。实务中,它主要用于保证远程登录和远程通信的安全,任何网络服务都可以用这个协议来加密。
切换账号
服务器里的用户根据权限等级大致可以分为三类:Root用户、sudo权限用户、普通用户。
- Root用户:服务器中拥有最大权限的掌管者账户。
- sudo权限用户:sudo是一种权限管理机制。sudo权限用户是指被赋予了一些普通用户没有的特殊权限的用户。一般会赋予admin、bioinfo账号这种sudo权限。
- 普通用户:普通的登录者用户账号。
在同一台服务器上切换账户一般使用“su”命令(switch user)。
#root用户切换至其他用户
su wangzq #可直接免密切换
#其他用户切换至root用户(su后面接空格即可,默认是切换至root用户)
su #需要输入root用户的密码
#被赋予了sudo权限的账户可以做到免密切换
sudo su #使用sudo权限做到免密切换(但需要 “被赋予了sudo权限的账户”的密码,保证是sudo账号本人在操作)
sudo su wangzq #使用sudo权限做到免密切换(但需要 “被赋予了sudo权限的账户”的密码,保证是sudo账号本人在操作)
[su]和[su -]区别
[su]只是切换了root身份,但Shell环境仍然是普通用户的Shell
[su -]连用户和Shell环境一起切换成root身份了。(等效用root账号完全重新登录)
只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。
如果切换账号后需要涉及到软件运行等复杂的服务器操作,建议使用[su -]。
sudo权限的赋予
第一种方法是使用命令 usermod。
usermod -a -G sudo USERNAME
#要向用户授予 sudo 权限
第二种方法是编辑/etc/sudoers 文件。
nano /etc/sudoers
#在/etc/sudoers文件中添加需要赋予权限的账户,还可以指定具体的命令权限
#甚至可以使用NOPASSWD来阻止sudo 请求身份验证。但是这样操作会有一定的危险性,谨慎使用。
Tips:同一个账号的跨服务器免密登录方法