GitLab在重置用户密码 – 找回root密码

摘要

忘记密码对于这个不喜欢记密码又强迫症不喜欢用一个密码走天下的人来说和吃饭一样平凡的发生着

首先切换到git用户

su git -

注意下面的高亮行

git@57aab1253afd:~/gitlab$ bundle exec rails console production
Loading production environment (Rails 4.2.6)
irb(main):001:0> user = User.find_by(email: '[email protected]')
=> #<User id: 1, email: "[email protected]", encrypted_password: "$2a$10$p2Nw/sU6SQqPT8CL69.4LumT8Cw7cEIZoyG4m2SbdLt...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 1, current_sign_in_at: "2016-07-09 08:22:03", last_sign_in_at: "2016-07-09 08:22:03", current_sign_in_ip: "192.168.16.1", last_sign_in_ip: "192.168.16.1", created_at: "2016-07-09 08:14:01", updated_at: "2016-07-09 08:22:03", name: "Administrator", admin: true, projects_limit: 100, skype: "", linkedin: "", twitter: "", authentication_token: "qtJhBiNuMUHaA_2UFYyZ", theme_id: 2, bio: nil, failed_attempts: 0, locked_at: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, notification_level: 1, password_expires_at: nil, created_by_id: nil, last_credential_check_at: nil, avatar: nil, confirmation_token: nil, confirmed_at: "2016-07-09 08:14:01", confirmation_sent_at: nil, unconfirmed_email: nil, hide_no_ssh_key: false, website_url: "", notification_email: "[email protected]", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard:0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, unlock_token: nil, otp_grace_period_started_at: nil, ldap_email: false, external: false>
irb(main):002:0> user.password = 'LookBack'
=> "LookBack"
irb(main):003:0> user.password_confirmation = 'LookBack'
=> "LookBack"
irb(main):004:0> user.save
=> true
irb(main):005:0>

未分类

GitLab在重置用户密码 – 找回root密码

下面是重置docker环境下的gitlab的用户密码

[root@DS-VM-Node58 ~]# sed -n '/- DB_/p' /data/docker-compose.yml 
    - DB_ADAPTER=mysql2
    - DB_HOST=127.0.0.1
    - DB_PORT=****
    - DB_USER=******
    - DB_PASS=************
    - DB_NAME=******
[root@DS-VM-Node58 ~]# docker exec -it gitlab_server bash         
root@DS-VM-Node58:/home/git/gitlab# mysql -u****** -p************ ****** -h127.0.0.1 -e "select id,email,encrypted_password,username from users where username ='root';"
+----+-------------------+--------------------------------------------------------------+----------+
| id | email             | encrypted_password                                           | username |
+----+-------------------+--------------------------------------------------------------+----------+
|  1 | [email protected] | $2a$10$UPq7XEJVAxuX19q40H8CdeDAVriMVoKSlodqxhO6Vo4Wa7TH6oyKW | root     |
+----+-------------------+--------------------------------------------------------------+----------+
root@DS-VM-Node58:/home/git/gitlab# bundle exec rails console production
Loading production environment (Rails 4.2.6)
irb(main):001:0> user = User.find_by(id: '1')
=> #<User id: 1, email: "[email protected]", encrypted_password: "$2a$10$UPq7XEJVAxuX19q40H8CdeDAVriMVoKSlodqxhO6Vo4...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 3, current_sign_in_at: "2017-03-15 12:19:22", last_sign_in_at: "2017-03-15 12:17:25", current_sign_in_ip: "172.30.0.57", last_sign_in_ip: "172.30.0.57", created_at: "2017-03-15 11:46:27", updated_at: "2017-03-15 21:07:57", name: "Administrator", admin: true, projects_limit: 100, skype: "", linkedin: "", twitter: "", authentication_token: "y--EW2jDrxezMezm6wUN", theme_id: 2, bio: nil, failed_attempts: 0, locked_at: nil, username: "root", can_create_group: true, can_create_team: false, state: "active", color_scheme_id: 1, notification_level: 1, password_expires_at: nil, created_by_id: nil, last_credential_check_at: nil, avatar: nil, confirmation_token: nil, confirmed_at: "2017-03-15 11:46:27", confirmation_sent_at: nil, unconfirmed_email: nil, hide_no_ssh_key: false, website_url: "", notification_email: "[email protected]", hide_no_password: false, password_automatically_set: false, location: nil, encrypted_otp_secret: nil, encrypted_otp_secret_iv: nil, encrypted_otp_secret_salt: nil, otp_required_for_login: false, otp_backup_codes: nil, public_email: "", dashboard: 0, project_view: 0, consumed_timestep: nil, layout: 0, hide_project_limit: false, unlock_token: nil, otp_grace_period_started_at: nil, ldap_email: false, external: false>
irb(main):002:0> user.password = 'LookBack.dwhd.org'
=> "LookBack.dwhd.org"
irb(main):003:0> user.password_confirmation = 'LookBack.dwhd.org'
=> "LookBack.dwhd.org"
irb(main):004:0> user.save!
=> true
irb(main):005:0> #按Ctrl+D键退出
root@DS-VM-Node58:/home/git/gitlab# mysql -u****** -p************ ****** -h127.0.0.1 -e "select id,email,encrypted_password,username from users where username ='root';"
+----+-------------------+--------------------------------------------------------------+----------+
| id | email             | encrypted_password                                           | username |
+----+-------------------+--------------------------------------------------------------+----------+
|  1 | [email protected] | $2a$10$dVahm7BERhs1eLD41h1kNe65OAM3YGLcQSUUnocWkvde6BDVjMGWe | root     |
+----+-------------------+--------------------------------------------------------------+----------+
root@DS-VM-Node58:/home/git/gitlab# exit
exit
[root@DS-VM-Node58 ~]#

参考地址:https://docs.gitlab.com/ee/security/reset_root_password.html

未分类

MySQL root密码忘记,原来还有更优雅的解法!

一直以来,对于MySQL root密码的忘记,以为只有一种解法-skip-grant-tables。

问了下群里的大咖,第一反应也是skip-grant-tables。通过搜索引擎简单搜索了下,无论是百度,抑或Google,只要是用中文搜索,首页都是这种解法。可见这种解法在某种程度上已经占据了使用者的心智。下面具体来看看。

skip-grant-tables的解法

首先,关闭实例

这里,只能通过kill mysqld进程的方式。

注意:不是mysqld_safe进程,也切忌使用kill -9。

# ps -ef |grep mysqld
root      6220  6171  0 08:14 pts/0    00:00:00 /bin/sh bin/mysqld_safe --defaults-file=my.cnf
mysql      6347  6220  0 08:14 pts/0    00:00:01 /usr/local/mysql57/bin/mysqld --defaults-file=my.cnf --basedir=/usr/local/mysql57 --datadir=/usr/local/mysql57/data --plugin-dir=/usr/local/mysql57/lib/plugin --user=mysql --log-error=slowtech.err --pid-file=slowtech.pid --socket=/usr/local/mysql57/data/mysql.sock --port=3307
root      6418  6171  0 08:17 pts/0    00:00:00 grep --color=auto mysqld

# kill 6347

使用–skip-grant-tables参数,重启实例

# bin/mysqld_safe --defaults-file=my.cnf --skip-grant-tables  --skip-networking &

设置了该参数,则实例在启动过程中会跳过权限表的加载,这就意味着任何用户都能登录进来,并进行任何操作,相当不安全。

建议同时添加–skip-networking参数。其会让实例关闭监听端口,自然也就无法建立TCP连接,而只能通过本地socket进行连接。

MySQL8.0就是这么做的,在设置了–skip-grant-tables参数的同时会自动开启–skip-networking。

修改密码

# mysql -S /usr/local/mysql57/data/mysql.sock

mysql> update mysql.user set authentication_string=password('123456') where host='localhost' and user='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

注意:
这里的update语句针对的是MySQL 5.7的操作,如果是在5.6版本,修改的应该是password字段,而不是authentication_string。

update mysql.user set password=password('123456') where host='localhost' and user='root';

而在MySQL 8.0.11版本中,这种方式基本不可行,因为其已移除了PASSWORD()函数及不再支持SET PASSWORD … = PASSWORD (‘auth_string’)语法。

不难发现,这种方式的可移植性实在太差,三个不同的版本,就先后经历了列名的改变,及命令的不可用。

下面,介绍另外一种更通用的做法,还是在skip-grant-tables的基础上。

与上面不同的是,其会先通过flush privileges操作触发权限表的加载,再使用alter user语句修改root用户的密码,如:

# bin/mysql -S /usr/local/mysql57/data/mysql.sock

mysql> alter user 'root'@'localhost' identified by '123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user 'root'@'localhost' identified by '123';
Query OK, 0 rows affected (0.00 sec)

免密码登录进来后,直接执行alter user操作是不行的,因为此时的权限表还没加载。可先通过flush privileges操作触发权限表的加载,再执行alter user操作。
需要注意的是,通过alter user修改密码只适用于MySQL5.7和8.0,如果是MySQL 5.6,此处可写成

update mysql.user set password=password('123456') where host='localhost' and user='root';

最后重启实例

mysql> shutdown;

# bin/mysqld_safe --defaults-file=my.cnf &

需要注意的是,如果在启动的过程中没有指定–skip-networking参数,无需重启实例。但在网上看到的绝大多数方案,都是没有指定该参数,但重启了实例,实在没有必要。

下面对这个方案做个总结:

  1. 如果只添加了–skip-grant-tables,修改完密码后,其实无需重启,执行flush privileges即可。

  2. 从安全角度出发,建议加上–skip-networking。但因其是静态参数,将其剔除掉需要重启实例。

  3. 加上–skip-networking,虽然可以屏蔽掉TCP连接,但对于本地其它用户,只要有socket文件的可读权限,都能无密码登录。还是存在安全隐患。

  4. 不建议通过update的方式修改密码,更通用的其实是alter user。

更优雅的解法

相对于skip-grant-tables方案,我们来看看另外一种更优雅的解法,其只会重启一次,且基本上不存在安全隐患。

首先,依旧是关闭实例

其次,创建一个sql文件

写上密码修改语句

# vim init.sql 
alter user 'root'@'localhost' identified by '123456';

最后,使用–init-file参数,启动实例

# bin/mysqld_safe --defaults-file=my.cnf --init-file=/usr/local/mysql57/init.sql &

实例启动成功后,密码即修改完毕~

如果mysql实例是通过服务脚本来管理的,除了创建sql文件,整个操作可简化为一步。

# service mysqld restart --init-file=/usr/local/mysql57/init.sql 

注意:该操作只适用于/etc/init.d/mysqld这种服务管理方式,不适用于RHEL 7新推出的systemd。

CentOS 7 root 密码重置

平日里让运维人员头疼的事情已经很多了,因此偶尔把 Linux 系统的密码忘记了并不用慌,只需简单几步就可以完成密码的重置工作。但前提是必须可以直接登录系统终端,也就是直连主机,因为需要修改启动项。

步骤一:重启系统

首先要重启系统,在出现启动项选项时快速按下 ⬆️ 或 ⬇️,避免系统自动选择。然后选择第一项,按下 e 键进入引导编辑界面。
未分类

步骤二:编辑引导选项

在 linux16 参数这行的最后面追加 rd.break 参数,然后按下 Ctrl+X 来运行修改过的引导选项。
未分类

步骤三:修改 root 密码

重新引导后,即可进入系统的紧急求援模式。
未分类
这时候,依次输入以下命令即可修改 root 密码。

mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot

未分类
由于我安装时系统选择的是中文,所以在终端上密码提示显示的是方块。
重启后即可以新密码进入系统。

Centos 单用户模式修改忘记的Root密码

由于疏忽,Centos的密码给忘记了,也没有备份,无奈只好使用单用户模式修改Root密码了。

Centos启动时,按E键进入编辑模式,

未分类

找到Linux 16开头的内容,定位到ro 修改为rw 并且在后面添加命令init=/sysroot/bin/sh 添加以后按Ctrl+X键启动。

未分类

启动后会进入单用户模式,

未分类

使用命令ls可以查看当前目录的文件,其中sysroot就是系统的文件,接下来就是要可以修改Root密码了

未分类

使用chroot /sysroot/ 命令进入到正常系统 中去。passwd root修改密码。

如果乱码(白点),使用 “#LANG=en” 修改成英文就可以了。

注意一定要在修改完密码后,输入

#touch /.autorelabel

Centos 禁止ROOT远程登录

1、建立一个普通用户

#useradd -G root zhj001
#passwd zhj001 修改用户密码

2、修改/etc/ssh/sshd_config

#vi /etc/ssh/sshd_config

PermitRootLogin yes

改为

PermitRootLogin no

3、重启sshd服务

#service sshd restart

远程治理用普通用户uploader登录,然后用 su root 切换到root用户拿到最高权限。

Ubuntu16.04解决无法切换root权限的问题

在su root时发现无法切换到root权限.显示: /usr/local/bin/zsh 没有文件或目录

想了想问题所在,突然想起来前段时间想要更换shell主题,于是装了zsh和oh-my-zsh,用了一段时间感觉没有bash好用(纯粹个人感觉),于是sudo apt remove zsh了.

当时将默认的shell改成了zsh:

chsh -s /bin/zsh

那么chsh到底修改了哪里呢? chsh -s 其实修改的是你的/etc/passwd文件里和你用户名相对应的一行,我们可以查看一下:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$  cat /etc/passwd|grep ^shanlei
shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/zsh
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$

进入passwd:

sudo vim /etc/passwd

我们可以看到 :

root:x:0:0:root:/root:/usr/local/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
lightdm:x:108:114:Light Display Manager:/var/lib/lightdm:/bin/false
whoopsie:x:109:116::/nonexistent:/bin/false
avahi-autoipd:x:110:119:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:112:65534:dnsmasq,,,:/var/lib/misc:/bin/false
colord:x:113:123:colord colour management daemon,,,:/var/lib/colord:/bin/false
speech-dispatcher:x:114:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false
kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:117:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:118:126:RealtimeKit,,,:/proc:/bin/false
saned:x:119:127::/var/lib/saned:/bin/false
usbmux:x:120:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/zsh

因为我想要的是默认的bash,所以我修改了passwd文件的第一行和最后一行:

第一行的/usr/local/bin/bash改成/usr/local/bin/zsh,这个是root用户的:

root:x:0:0:root:/root:/usr/local/bin/bash

把最后一行的/bin/bash改成/bin/zsh,这个应该是每台电脑的登录用户名+计算机名组成的:

shanlei:x:1000:1000:shanlei,,,:/home/shanlei:/bin/bash

保存退出,重启shell,切换root权限,发现/usr/local/bin/bash 没有文件或目录

检查bash安装位置:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

发现bash的执行文件在/bin/bash,于是重新修改/etc/passwd文件的第一行:

root:x:0:0:root:/root:/bin/bash

然后把默认的shell改为bash:

chsh -s /bin/bash

再次切换:

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ su -
密码: 
root@shanlei-Lenovo-ideapad-110-15ISK:~# 

成功~

————————————————————————-美丽的分割线—————————————————————————-

修改ubuntu默认shell的另外两种方式:

  • ln -s : 强制把/bin/sh的软链接改到bash中: sudo ln -s /bin/bash /bin/sh
  • dpkg-reconfigure dash:在Ubuntu中建议使用这个方法:sudo dpkg-reconfigure dash,弹出来个选择项,把“dash设为默认shell”选择no。
    怎样查看自己的机器上装了哪些shell?
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

怎样查看自己当前使用的shell是哪个?(注意SHELL一定要是大写!)

shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ echo $SHELL
/bin/bash
shanlei@shanlei-Lenovo-ideapad-110-15ISK:~$ 

执行了zsh之后,我查看当前shell类型仍然是/bin/bash呢?

当前的shell是一个大环境,是针对一个已登录用户而言的,而我们使用的bash或zsh只是启动了一个bash或zsh解释器程序而已,并没有改变大环境,如果想要改变改变大环境,必须使用chsh

MySQL允许root帐号远程登录

MySQL安装完成后,默认是不允许root进行远程登录的,默认用户表中有root用户

修改mysql的root密码我们可以使用这个命令

/usr/local/bin/mysqladmin -uroot password 123

意思就是将root帐号以localhost域的密码设置成“123”;

好我们再谈MySQL支持root远程连接的方法,远程连接我们自然要用’%’来匹配比较好,或者你可以指定某个IP

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

上句话的意思就是使用root在任意一台计算机上面以密码“123456”来连接,你如果在远程计算机上面使用密码“123”是无法连接的,包括你在本地使用mysql -uroot -p 密码为123456也无法连接。

当然执行上面一句SQL我们还需要刷新下缓存区,使之生效

mysql>FLUSH PRIVILEGES

经过研究,其实还有一种更加方便的修改root的远程启用方式。

mysql>use mysql;
mysql>update user set host='%' where user='root' AND host='localhost';
mysql>FLUSH PRIVILEGES;

这种方法的好处就是在于 不用直接的修改用户的密码,而且采用经常使用的sql比较熟悉。

OK,到这里你就可以使用root帐号的远程登录了,当然我们在调试情况下使用root远程比较多,但是当我们在生产部署的时候就一定要注意关掉root的远程连接。

附1:查看mysql端口号方法

1、进入mysql cmd,

status;

将显示当前mysql的version的各种信息。

2、查看MySQL端口号

show global variables like 'port';

附2:修改Mysql端口号

修改mysql配置文件”my.cnf”

[mysqld]
port=3306

改完了保存,重启mysql,再根据附1第二点进行查看端口是否更改成已经修改的端口。

重置CentOS 7的Root密码

1 – 在启动grub菜单,选择编辑选项启动

未分类

2 – 按键盘e键,来进入编辑界面

未分类

3 – 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh

未分类

4 – 现在按下 Control+x ,使用单用户模式启动

未分类

5 – 现在,可以使用下面的命令访问系统

chroot /sysroot

6 – 重置密码

passwd root     #需要输入两次新密码

7 – 更新系统信息

touch /.autorelabel

8 – 退出chroot

exit

9 – 重启你的系统

reboot

ubuntu下安装wireshark(以及配置非root)

Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。与很多其他网络工具一样,Wireshark也使用pcap network library来进行封包捕捉。

对于学习计算机网络协议有不小的帮助。

工具/原料

  • ubuntu 系统
  • 网络畅通

方法/步骤

1、首先,安装只要一个命令行(由于之前装过了,所以没有在安装什么了):sudo apt-get install wireshark

未分类

2、上一步,已经将wireshark安装完毕,接下来我没就可以通过:wireshark 用来启动它的图形界面。

未分类

3、然而,dumpcap需要root权限才能使用的,以普通用户打开Wireshark,Wireshark当然没有权限使用dumpcap进行截取封包。虽然可以用:sudo wireshark来完成。但是,以sudo的方式用root打开Wireshark显然是不安全的,也不是很方便,因为得到的封包数据也属于root用户。

4、于是,我们提供下面的方法来完成普通用户下的操作。

(1).添加wireshark用户组
#sudo groupadd wireshark

未分类

(2).将dumpcap更改为wireshark用户组
#sudo chgrp wireshark /usr/bin/dumpcap

未分类

(3).让wireshark用户组有root权限使用dumpcap #sudo chmod 4755 /usr/bin/dumpcap

未分类

(4).将需要使用的普通用户名加入wireshark用户组,我的用户是“cai”(需要根据具体用户名修改!在#前面可以找到哟),则需要使用命令:
#sudo gpasswd -a dengyi wireshark

未分类

接下来你就可以以普通用户登陆打开Wireshark,也会有权限进行抓包了。

Linux(centos)禁止root用户直接登录sshd并修改默认端口

新建一个帐号

#创建用户 
adduser yourusername 
#设置密码 
passwd yourusernamepassword 

给用户添加sudo权限

#切换到root用户下,执行 
visudo 
#找到root ALL=(ALL) ALL这一行,在下面加上 
yourusername ALL=(ALL) ALL 
# :wq保存并退出 

测试是否成功

su yourusername 
cd ~ 
sudo mkdir test 
#输入密码后成功创建代表设置成功 

修改SSHD配置,禁止root直接登录

vi /etc/ssh/sshd_config 
#找到#PermitRootLogin yes”将yes该外no 
PermitRootLogin no 
#找到#Port 22字段删掉#,将22改为其他不被使用的端口 
Port XXXX 

重启sshd服务

service sshd restart 

重要提醒:这时切莫退出服务器。你要测试能不能使用刚创建的用户成功地通过ssh进入到服务器。打开终端的另一个实例,以之前创建的用户通过ssh进入到服务器。要是一切都正常,你可以以根用户身份安全地注销退出服务器。