无密码登陆

参考:

点击打开链接


假设 A 为客户机器,B为目标机;


要达到的目的:

A机器ssh登录B机器无需输入密码;

加密方式选 rsa|dsa均可以,默认dsa


做法:

1、登录A机器 

2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;

ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.

具体方法如下:

ssh-keygen -t rsa

然后全部回车,采用默认值.


这样生成了一对密钥,存放在用户目录的~/.ssh下。

将公钥考到对方机器的用户目录下,并拷到~/.ssh/authorized_keys中。


要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。


通过别名登陆:

在 ~/.ssh/ 目录下有个 config文件,在config文件中增加如下:

Host logstash1

     HostName 10.10.153.22

     user root

     StrictHostKeyChecking no

     UserKnownHostsFile /dev/null

     CheckHostIP no

这样配置了直接通过 ssh   logstash1 就可以登陆 10.10.153.22这台机器了


<think> 我们需要讨论无密码登录Oracle数据库中的dmscaky账户的方法。根据之前的上下文,用户现在想查找无密码登录的方法。在Oracle数据库中,无密码登录通常需要满足特定条件,例如操作系统认证或使用特殊的认证方式。 参考已有的引用: 引用[1]提到了密码复杂度验证函数,其中包含了一些常见的弱密码。这表明Oracle对密码有安全要求,但也暗示了如果密码为空或者使用某些默认设置,可能会绕过。 引用[2]提到在安装Oracle后需要创建数据库用户并记录用户名和密码,这属于正常的有密码登录。 引用[3]提到在重置sys和system用户密码时,发现user$表中的PASSWORD字段为空。这暗示了在某些情况下,密码可以为空,从而可能实现无密码登录。 引用[4]是关于密码过期的处理方法,与无密码登录无关。 因此,我们重点考虑引用[3]中提到的密码为空的情况。在Oracle中,如果某个用户的密码在user$表中为空,那么可以通过以下方式实现无密码登录? 然而,需要注意的是,在Oracle中,除了密码为空,还可以通过操作系统认证的方式实现无密码登录(即OS认证)。 无密码登录dmscaky账户的两种可能方法: 1. 操作系统认证(OS认证):如果dmscaky账户被配置为使用操作系统认证,那么只要当前操作系统用户属于特定的操作系统组(通常是dba组或oper组),就可以无密码登录。 2. 密码为空:如果dmscaky账户的密码被设置为空(尽管默认情况下Oracle不允许空密码,但可以通过修改系统表的方式强制设置,但这是不安全且不被推荐的)。 下面详细介绍这两种方法: 方法1:操作系统认证(推荐且安全的方式) 步骤: a. 确保Oracle数据库启用了操作系统认证。检查参数文件(如spfile或pfile)中的`REMOTE_LOGIN_PASSWORDFILE`参数值是否为`NONE`(表示使用操作系统认证)或`EXCLUSIVE`(同时允许口令文件和操作系统认证)。实际上,即使设置为`EXCLUSIVE`,操作系统认证也是可用的。 b. 在数据库服务器上,使用属于dba组(或其他有权限的组)的操作系统用户登录。例如,通常Oracle软件安装用户(oracle)属于dba组。 c. 在操作系统中,确保存在一个与Oracle用户名dmscaky同名的操作系统用户?实际上,并不一定需要同名。Oracle的OS认证有两种方式: - 方式1:使用“OPS$”前缀。在数据库用户创建时,用户名可以为'OPS$<os_username>',这样当操作系统用户<os_username>登录到服务器时,可以直接用“/”登录数据库。 - 方式2:使用外部认证,即设置数据库用户为“IDENTIFIED EXTERNALLY”,这时数据库用户可以是任意名字,但需要配置sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES参数,以及确保操作系统用户有对应的权限。 但是,对于dmscaky这个账户,我们假设它没有被创建为OPS$开头的用户,那么我们可以尝试第二种方式:使用sysdba权限登录(这实际上是操作系统认证的一种)。但注意,sysdba登录后相当于sys用户,而不是dmscaky用户。 因此,我们想要以dmscaky的身份通过操作系统认证登录,需要在数据库中创建dmscaky用户并指定为外部认证。 具体步骤: 1. 在数据库服务器上,创建一个操作系统用户(假设名为dmscaky_os_user),并将其加入dba组(或其他有权限的组,如oinstall)?实际上,对于外部认证,通常只需要操作系统用户存在即可。 2. 在数据库中创建dmscaky用户,并指定为外部认证: ```sql CREATE USER dmscaky IDENTIFIED EXTERNALLY; GRANT CONNECT, RESOURCE TO dmscaky; ``` 或者对于已有的dmscaky用户,修改认证方式: ```sql ALTER USER dmscaky IDENTIFIED EXTERNALLY; ``` 3. 在Oracle客户端的配置文件sqlnet.ora中(在$ORACLE_HOME/network/admin目录下)设置: ``` SQLNET.AUTHENTICATION_SERVICES = (ALL) # 或 (NTS) 在Windows上,或(NONE)表示禁用,这里要启用操作系统认证,设置为(ALL)或(NTS)或(BEQ)等,具体取决于平台 ``` 在Linux上,通常设置为: ``` SQLNET.AUTHENTICATION_SERVICES = (ALL) ``` 4. 然后,在数据库服务器上,使用操作系统用户dmscaky_os_user登录,然后执行: ```bash sqlplus / # 注意,这里没有用户名和密码,使用单个斜杠 ``` 或者指定用户名(因为数据库用户名为dmscaky): ```bash sqlplus /@服务名 as dmscaky ``` 但实际上,外部认证默认使用OPS$操作系统用户名的映射。为了避免映射问题,通常我们会在创建用户时指定: ```sql CREATE USER OPS$dmscaky_os_user IDENTIFIED EXTERNALLY; GRANT CONNECT, RESOURCE TO OPS$dmscaky_os_user; ``` 然后,在操作系统中以dmscaky_os_user用户登录,使用: ```bash sqlplus / ``` 这样就会登录到OPS$dmscaky_os_user数据库用户。 但是,用户要求的是以dmscaky这个数据库用户无密码登录。因此,我们需要将数据库用户dmscaky设置为外部认证,并且确保当前操作系统用户满足条件(通常是操作系统用户名需要和数据库用户名一致?不一定,具体看配置)。实际上,如果数据库用户名为dmscaky,且设置为IDENTIFIED EXTERNALLY,那么Oracle默认会期望操作系统用户名为dmscaky。因此,我们需要先在操作系统上创建用户dmscaky,然后以dmscaky操作系统用户登录服务器,然后执行: ```bash sqlplus / ``` 这样就会以数据库用户dmscaky登录。 方法2:设置空密码(不安全,且默认不被允许) 在Oracle中,密码不能为空。但是,引用[3]提到sys和system用户的password字段为空,这可能是由于特殊的内部机制。对于普通用户,我们无法直接设置空密码。但我们可以尝试通过修改系统表的方式(不推荐,危险): - 以sysdba登录: ```sql sqlplus / as sysdba ``` - 然后执行: ```sql ALTER USER dmscaky IDENTIFIED BY ""; ``` 但是,Oracle会报错:ORA-28007: 口令无法为 NULL。 另一种做法是直接修改user$表(极其不推荐,可能破坏系统): ```sql UPDATE user$ SET password=NULL WHERE name='DMSCAKY'; COMMIT; ``` 然后尝试无密码登录: ```bash sqlplus dmscaky/ ``` 但是,这样操作后,登录可能会失败,因为Oracle内部密码验证机制不允许空密码。而且直接修改user$表可能导致数据库不一致,需要执行额外的操作(如`alter user dmscaky identified by values '...'`)来重置,但空值不被接受。 因此,方法2基本不可行。 综上所述,推荐使用操作系统认证(方法1)来实现无密码登录dmscaky账户。步骤如下: 步骤详细说明(以Linux系统为例): 1. 确保Oracle数据库的sqlnet.ora文件启用了操作系统认证: ```bash cd $ORACLE_HOME/network/admin vi sqlnet.ora ``` 检查并设置: ``` SQLNET.AUTHENTICATION_SERVICES = (ALL) ``` 2. 在数据库服务器上创建操作系统用户dmscaky(与数据库用户名相同): ```bash sudo useradd dmscaky sudo passwd dmscaky # 设置操作系统用户的密码,但注意,我们后面登录数据库不需要这个密码,而是通过操作系统认证 ``` 3. 将操作系统用户dmscaky添加到dba组(或其他有权限的组,通常Oracle软件安装用户所属的组): ```bash sudo usermod -aG dba dmscaky ``` 4. 以具有sysdba权限的数据库用户(如sys)登录数据库,创建或修改dmscaky用户为外部认证: ```sql -- 如果用户不存在 CREATE USER dmscaky IDENTIFIED EXTERNALLY; -- 如果用户已存在 ALTER USER dmscaky IDENTIFIED EXTERNALLY; -- 授予必要的权限 GRANT CONNECT, RESOURCE TO dmscaky; ``` 5. 切换到操作系统用户dmscaky: ```bash su - dmscaky ``` 6. 设置Oracle环境变量(如ORACLE_HOME, ORACLE_SID, PATH等),在dmscaky用户的.bash_profile中设置: ```bash export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1 export PATH=$PATH:$ORACLE_HOME/bin export ORACLE_SID=ORCL # 替换为实际的SID ``` 7. 使用以下命令登录数据库(不需要密码): ```bash sqlplus / ``` 8. 验证当前用户: ```sql SHOW USER; ``` 应该显示为dmscaky。 注意事项: - 这种方法只适用于在数据库服务器本地登录,远程登录无法使用操作系统认证。 - 操作系统认证依赖于操作系统用户的安全,因此必须确保服务器安全。 如果上述方法不可行,还可以考虑使用以下方式(但需要密码,并非无密码): - 使用钱包(Oracle Wallet)存储密码,实现免密登录。但这不是真正的无密码,而是将密码存储在一个加密的文件中。 由于用户明确要求无密码登录,因此钱包方式在此不展开。 因此,总结:无密码登录dmscaky账户的主要方法是通过操作系统认证,前提是在数据库服务器上创建同名的操作系统用户,并将数据库用户设置为外部认证。 如果用户没有权限在数据库服务器上创建操作系统用户,或者无法修改数据库用户认证方式,则无法实现无密码登录。 最后,需要注意的是,无密码登录会降低安全性,请谨慎使用。 根据上述内容,生成相关问题: 1. 如何配置Oracle数据库以实现操作系统认证? 2. Oracle数据库中的外部认证和密码认证有什么区别? 3. 在Oracle数据库中如何修改用户认证方式? </think> ### 无密码登录 Oracle 数据库 dmscaky 账户的方法 在 Oracle 数据库中实现无密码登录 dmscaky 账户需要满足特定条件,主要通过操作系统认证方式实现。以下是两种可行方法: --- #### **方法 1:通过操作系统认证(本地登录)** **适用场景**:在安装了 Oracle 的服务器本地操作时可用。 1. **前提条件**: - 当前登录的操作系统用户属于 `dba` 组(或 Oracle 安装用户组) - dmscaky 账户需配置为操作系统认证(默认未开启) 2. **配置步骤**: ```bash # 登录服务器后切换到 Oracle 安装用户 su - oracle # 编辑 sqlnet.ora 启用操作系统认证 echo "SQLNET.AUTHENTICATION_SERVICES = (NTS)" >> $ORACLE_HOME/network/admin/sqlnet.ora ``` 3. **修改 dmscaky 账户认证方式**: ```sql -- 以 sysdba 身份登录 sqlplus / as sysdba -- 修改 dmscaky 使用操作系统认证 ALTER USER dmscaky IDENTIFIED EXTERNALLY; ``` 4. **无密码登录**: ```bash # 直接使用斜杠登录 sqlplus / ``` - 登录后自动关联当前操作系统用户到同名数据库账户 - 若操作系统用户名与数据库用户名不同,需额外配置映射规则[^1] --- #### **方法 2:通过空密码登录(需特殊配置)** **适用场景**:在 Oracle 11g 及更早版本中可用(12c+ 默认禁用空密码)。 1. **启用空密码策略**: ```sql -- 检查密码验证函数状态 SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_VERIFY_FUNCTION'; -- 禁用密码复杂度检查(谨慎操作) ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL; ``` 2. **设置空密码**: ```sql -- 重置 dmscaky 密码为空 ALTER USER dmscaky IDENTIFIED BY ""; ``` 3. **登录验证**: ```bash sqlplus dmscaky/ # 注意:密码部分留空 ``` > ⚠️ **关键注意事项**: > 1. 现代 Oracle 版本(12c+)默认禁用空密码,需修改 `SEC_CASE_SENSITIVE_LOGON` 参数[^3] > 2. 方法 2 严重违反安全规范,仅适用于测试环境 > 3. 引用[1]显示 Oracle 强制密码复杂度验证,空密码可能被拦截[^1] --- #### **失败排查** 如果登录失败,检查以下配置: 1. **操作系统组权限**: ```bash # 检查当前用户是否在 dba 组 id -a ``` 2. **数据库认证方式**: ```sql SELECT username, password FROM user$ WHERE name='DMSCAKY'; ``` - 若 `PASSWORD` 列为空,表示配置为外部认证[^3] 3. **监听器状态**: ```bash lsnrctl status ``` > 💡 **替代方案**:对于生产环境,建议使用 Oracle Wallet 存储加密密码实现"免输入密码"登录,而非完全无密码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值