Bowtie2用法祥解

参考自:http://bowtie-bio.sourceforge.net/bowtie2/manual.shtml

懒人必看

对参考序列构建index
$ bowtie2-build genome.fasta index

尝试使用前10000个reads进行比对
$ bowtie2 -u 10000 -p 8 -x index -1 reads1.fq -2 reads2.fq -S out.sam

使用8个线程进行比对
$ bowtie2 -p 8 -x index -1 reads1.fq -2 reads2.fq -S out.sam

比对的sam结果中添加了read group信息
$ bowtie2 -p 8 --rg-id sample01 --rg "PL:ILLUMINA" --rg "SM:sample01" -x index -1 reads1.fq -2 reads2.fq -S out.sam 

常用的参数进行比对,可以更改其中的参数获得更好的结果
$ bowtie2 -q --phred33 --sensitive --end-to-end -I 0 -X 500 --fr --un unpaired --al aligned --un-conc unconc --al-conc alconc -p 6 --reorder -x <bt2-idx> {-1 <m1gt; -2 <m2> | -U <r>} -S [<hit>]

用法:

bowtie2 [options]* -x <bt2-idx> {-1 <m1> -2 <m2> | -U <r>} -S [<hit>] 

bowtie2-build用法

bowtie2-build默认情况下将fasta文件换成index的数据库。
$ bowtie2-build <fasta文件> <要生存的索引文件前缀名>

必须参数:

-x <bt2-idx> bowtie2-build所生成的索引文件的前缀。首先 在当前目录搜寻,然后
在环境变量 BOWTIE2_INDEXES 中制定的文件夹中搜寻。

-1 <m1> 双末端测寻对应的文件1。可以为多个文件,并用逗号分开;多个文件必须和 -2 
<m2> 中制定的文件一一对应。比如:"-1 flyA_1.fq,flyB_1.fq -2 flyA_2.fq,flyB
_2.fq". 测序文件中的reads的长度可以不一样。

-2 <m2> 双末端测寻对应的文件2.

-U <r> 非双末端测寻对应的文件。可以为多个文件,并用逗号分开。测序文件中的reads
长度可以不一样。

-S <hit> 所生成的SAM格式的文件前缀。默认是输入到标准输出。

以下是可选参数:

输入参数

-q 输入的文件为FASTQ格式文件,此项为默认值。

-qseq 输入的文件为QSEQ格式文件。

-f 输入的文件为FASTA格式文件。选择此项时,表示--ignore-quals也被选择了。

-r 输入的文件中,每一行代表一条序列,没有序列名和测序质量等。选择此项时,表示--
ignore-quals也被选择了。

-c 后直接为比对的reads序列,而不是包含序列的文件名。序列间用逗号隔开。选择此项时,
表示—ignore-quals也被选择了。

-s/--skip <int> inputreads中,跳过前<int>reads或者pairs

-u/--qupto <int> 只比对前<int>reads或者pairs(在跳过前<int>reads或者
pairs后)。Default: no limit.

-5/--trim5 <int> 剪掉5'<int>长度的碱基,再用于比对。(default: 0).

-3/--trim3 <int> 剪掉3'<int>长度的碱基,再用于比对。(default: 0).

--phred33 输入的碱基质量等于ASCII码值加上33. 在最近的illumina pipiline
得以运用。最低碱基质量是“#”。

--phred64 输入的碱基质量等于ASCII码值加上64.最低碱基质量是“B”。

--solexa-quals Solexa的碱基质量转换为Phred。在老的GA Pipeline版本中得以
运用。Default: off.
 --int-quals 输入文件中的碱基质量为用“ ”分隔的数值,而不是ASCII码。比如 40 40 
30 40...Default: off.

 –end-to-end模式下的预设参数

--very-fast Same as: -D 5 -R 1 -N 0 -L 22 -i S,0,2.50 
--fast Same as: -D 10 -R 2 -N 0 -L 22 -i S,0,2.50 
--sensitive Same as: -D 15 -R 2 -N 0 -L 22 -i S,1,1.15 (default in --end-to-end mode) 
--very-sensitive Same as: -D 20 -R 3 -N 0 -L 20 -i S,1,0.50

–loca模式下的预设参数

--very-fast-local Same as: -D 5 -R 1 -N 0 -L 25 -i S,1,2.00 
--fast-local Same as: -D 10 -R 2 -N 0 -L 22 -i S,1,1.75 
--sensitive-local Same as: -D 15 -R 2 -N 0 -L 20 -i S,1,0.75 (default in --local mode) 
--very-sensitive-local Same as: -D 20 -R 3 -N 0 -L 20 -i S,1,0.50

 比对参数:

-N <int> 进行种子比对时允许的mismatch. 可以设为0或者1. Default: 0.

-L <int> 设定种子的长度.

************************************************************
功能选项
给bowtie的一些参数设定值的时候,使用一个计算公式代替,于是值的大小与比对序列的长
度成一定关系。<func>有三部分组成: (a)计算方法, 包括常数(C),线性(L),平方根(S)
自然对数(G); (b)一个常数; (c)一个系数. 
例如: 
<func> L,-0.4,-0.6 则计算公式为: f(x) = -0.4 + -0.6 * x
<func> G,1,5.4 则计算公式为: f(x) = 1.0 + 5.4 * ln(x)
************************************************************

-i <func> 设定两个相邻种子间所间距的碱基数。
************************************************************
例如:如果read的长度为30, 种子的长度为10, 相邻种子的间距为6,则提取出的种子如下
所示:
Read:      TAGCTACGCTCTACGCTATCATGCATAAAC
Seed 1 fw: TAGCTACGCT
Seed 1 rc: AGCGTAGCTA
Seed 2 fw:       CGCTCTACGC
Seed 2 rc:       GCGTAGAGCG
Seed 3 fw:             ACGCTATCAT
Seed 3 rc:             ATGATAGCGT
Seed 4 fw:                   TCATGCATAA
Seed 4 rc:                   TTATGCATGA 
************************************************************
 --end-to-end模式中默认值为”-i S,1,1.15”.即表示f(x) = 1 + 1.15 * 
sqrt(x). 如果read长度为100, 则相邻种子的间距为12.

--n-ceil <func> 设定read中允许含有不确定碱基(GTAC,通常为N)的最大数目. 
Default: L,0,0.15. 计算公式为: f(x) = 0 + 0.15 * x, 表示长度为100read
最多运行存在15个不确定碱基. 一旦不确定碱基数超过15, 则该条read会被过滤掉.

--dpad <int> Default: 15.

--gbar <int> read头尾<int>个碱基内不允许gap. Default: 4.
 --ignore-quals 计算错配罚分的时候不考虑碱基质量. 当输入序列的模式为-f, -r 
-c的时候, 该设置自动成为默认设置.

--nofw/--norc –nofw设定read不和前导链(forward reference strand)进行比对;
 --norc设定不和后随链(reverse-complement reference strand)进行比对. 
Default: both strands enabled.

--end-to-end 比对是将整个read和参考序列进行比对. 该模式--ma的值为0. 该模式为
默认模式, --local模式冲突.

--local 该模式下对read进行局部比对, 从而, read两端的一些碱基不比对,从而使比
对得分满足要求. 该模式下 –ma默认为2.

 得分罚分参数

--ma <int> 设定匹配得分. --local模式下每个read上碱基和参考序列上碱基匹配, 
<int>. 在—end-to-end模式中无效. Default: 2.

--mp MX,MN 设定错配罚分. 其中MX为所罚最高分, MN为所罚最低分. 默认设置下罚分与
碱基质量相关. 罚分遵循的公式为: MN + floor( (MX-MN)(MIN(Q, 40.0)/40.0) ). 
其中Q为碱基的质量值. 如果设置了—ignore-qual参数, 则错配总是罚最高分. Default: 
MX = 6, MN = 2.

--np <int> 当匹配位点中read, reference上有不确定碱基(比如N)时所设定的罚分值.
Default: 1.

--rdg <int1>,<int2> 设置在read上打开gap 罚分<int1>, 延长gap罚分<int2>. 
Default: 5, 3.

--rfg <int1>,<int2> 设置在reference上打开gap 罚分<int1>, 延长gap罚分
<int2>. Default: 5, 3.

--score-min <func> 设定成为有效比对的最小分值. 在—end-to-end模式下默认值为:
L,-0.6,-0.6; --local模式下默认值为: G,20,8.

报告参数

-k <int> 默认设置下, bowtie2搜索出了一个read不同的比对结果, 并报告其中最好的
比对结果(如果好几个最好的比对结果得分一致, 则随机挑选出其中一个). 而在该模式下, 
bowtie2最多搜索出一个read <int>个比对结果, 并将这些结果按得分降序报告出来.

-a -k参数一样, 不过不限制搜索的结果数目. 并将所有的比对结果都按降序报告出来. 
此参数和-k参数冲突. 值得注意的是: 如果基因组含有很多重复序列时, 该参数会导致程序
运行极其缓慢.

Effort 参数

-D <int> 比对时, 将一个种子延长后得到比对结果, 如果不产生更好的或次好的比对结果, 
则该次比对失败. 当失败次数连续达到<int>次后, 则该条read比对结束. Bowtie2才会
继续进行下去. Default: 15. 当具有-k-a参数, 则该参数所产生的限制会自动调整.

-R <int> 如果一个read所生成的种子在参考序列上匹配位点过多. 当每个种子平均匹配超
300个位置, 则通过一个不同的偏移来重新生成种子进行比对. <int>则是重新生成种子
的次数. Default: 2.

Paired-end 参数

-I/--minins <int> 设定最小的插入片段长度. Default: 0.

-X/--maxins <int> 设定最长的插入片段长度. Default: 500.

--fr/--rf/--ff 设定上下游reads和前导链paired-end比对的方向. --fr: 匹配时,
read15'端上游, 和前导链一致, read23'下游, 和前导链反向互补. 或者read2
上游, read1在下游反向互补; --rf: read15'端上游, 和前导链反向互补, read2
3'端下游, 和前导链一致; --ff: 两条reads都和前导链一致. Default: --fr. 默认
设置适合于Illuminapaired-end测序数据; 若是mate-paired, 则要选择—rf参数.

--no-mixed 默认设置下, 一对reads不能成对比对到参考序列上, 则单独对每个read
行比对. 该选项则阻止此行为.

--no-discordant 默认设置下, 一对reads不能和谐比对(concordant alignment,
即满足-I, -X, --fr/--rf/--ff的条件)到参考序列上, 则搜寻其不和谐比对(discon
cordant alignment, 即两条reads都能独一无二地比对到参考序列上, 但是不满足-I,
-X,--fr/--rf/--ff的条件). 该选项阻止此行为.

--dovetail read1read2的关系为dovetail的时候,该状况算为和谐比对. 默认情况
dovetail不算和谐比对.

--no-contain read1read2的关系为包含的时候, 该状况不算为和谐比对. 默认情况
下包含关系算为和谐比对.

--no-overlap read1read2的关系为有重叠的时候, 该状况不算为和谐比对. 默认情
况下两个reads重叠算为和谐比对.

输出参数

-t/--time  --un <path> unpaired reads写入到<path>.
--un-gz <path> unpaired reads写入到<path>, gzip压缩.
--un-bz2 <path> unpaired reads写入到<path>, bz2压缩.

--al <path> 将至少能比对1次以上的unpaired reads写入<path>.
--al-gz <path> ... ,gzip压缩.
--al-bz2 <path> ... ,bz2压缩.

--un-conc <path> 将不能和谐比对的paired-end reads写入<path>.
--un-conc-gz <path> ... ,gzip压缩.
--un-conc-bz2 <path> ... ,bz2压缩.

--al-conc <path> 将至少能和谐比对一次以上的paired-end reads写入<path>.
--al-conc-gz <path> ... ,gzip压缩.
--al-conc-bz2 <path>... ,bz2压缩.

--quiet 安静模式,除了比对错误和一些严重的错误, 不在屏幕上输出任何东西.

--met-file <path> bowtie2的检测信息(metrics)写入文件<path>. 用于debug. 
Default: metrics disabled.

--met-stderr <path> bowtie2的检测信息(metrics)写入标准错误文件句柄. 和上
一个选项不冲突. Default: metrics disabled.

--met <int> 每隔<int>秒写入一次metrics记录. Default: 1.

 Sam 参数

--no-unal 不记录没比对上的reads.

--no-hd 不记录SAM header lines (@开头).

--no-sq 不记录@SQSAM header lines.

--rg-id <text> 设定read group ID为text。在SAM文件的头中增加一行@RG,在输出的SAM
文件中添加Tag "RG:Z:text"。

--rg <text> 使用text作为@RG的一列,比如"SM:Pool1"。在@RG中加入多列,则多次使用
该参数即可。在进行Variant calling的过程中需要@RG头,SM信息和Tag RG。

性能参数

-o/--offrate <int> 无视indexoffrate, <int>取代之. Index默认的<int> 
值为5. <int>值必须大于indexoffrate, 同时<int>越大, 耗时越长,耗内存越少.

-p/--threads NTHREADS 设置线程数. Default: 1

--reorder 多线程运算时, 比对结果在顺序上会和文件中reads的顺序不一致, 使用该选
, 则使其一致.

--mm 使用内存定位的I/O来载入index, 而不是常规的文件I/O. 从而使多个bowtie
序共用内存中同样的index, 节约内存消耗.

 其它参数:

--qc-filter 滤除QSEQ fileter filed为非0reads. 仅当有—qseq选项时有效. 
Default: off. 

--seed <int> 使用<int>作为随机数产生的种子. Default: 0.

--version 打印程序版本并退出

-h/--help 打印用法信息并推出


服务器行情

好久没关注服务器配置与价格了,今天通过淘宝查看了下行情,如下:

配件 名称 报价网址 价格 数量 价格
CPU Intel/英特尔XEON E5-2620 服务器CPU http://item.taobao.com/item.htm?spm=a1z10.3.17.21&id=14632262825& 2200 2 4400
主板 Intel/英特尔S2600CP2服务器主板 http://item.taobao.com/item.htm?spm=a1z10.3.17.21&id=14021314905& 2900 1 2900
内存 HY/现代16G DDR3 (RECC)REG ECC 1333服务器内存 http://item.taobao.com/item.htm?spm=a1z10.3.17.29&id=12489828234& 720 8 5760
硬盘 Seagate/希捷2TB SATA2 NS 企业级硬盘 http://item.taobao.com/item.htm?spm=a1z10.3.17.13&id=12389025877& 1620 2 3240
电源 航嘉HK600 额定功率500W 服务器电源 http://item.taobao.com/item.htm?spm=a1z10.3.17.21&id=15969008757& 480 1 480
机箱 道和—牧马人X800塔式服务器机箱/工作站机箱(标准版) http://item.taobao.com/item.htm?spm=a1z10.3.17.38&id=14798052919& 390 1 390
总计 17170

wordpress的安装

今天发现wordpress对于写blog是个非常优秀的软件,于是将之安装到服务器上。安装过程如下:

1. 下载wordpress

$ wget -c http://cn.wordpress.org/wordpress-3.4.1-zh_CN.zip

2. 将wordpress-3.4.1-zh_CN.zip上传到服务器的 /var/www/html/ 文件夹中并解压

# cd  /var/www/html/
# unzip wordpress-3.4.1-zh_CN.zip
# mv wordpress wordpress_chenlianfu

3. 安装 php-devel 和 php-mysql 等插件

# yum install -y php php-devel php-mysql

4. 创建 wordpress 数据库

$ mysql -u root -p
mysql> create database wordpress

5. 在/etc/httpd/conf/httpd.conf中加入下一行,并重启httpd服务

Alias /chenlianfu_blog "/var/www/html/wordpress_chenlianfu"
# /etc/init.d/httpd  restart

6. 安装并配置wordpress

在浏览器输入http://www.hzaumycology.com/chenlianfu_blog/wp-admin/install.php,进入安装界面,按提示进行,将生成的config文件内容写入到配置文件中。

vim /var/www/html/wordpress_chenlianfu/wp-config.php

 

KVM安装虚拟机

自CentOS 6开始,虚拟化平台已经从xen转向KVM,所以在CentOS 6安装KVM还是非常的简单的。

CentOS 6安装配置KVM

1、安装KVM

#yum groupinstall Virtualization 'Virtualization Client'

2、安装api支持

#yum install libvirt
#service libvirtd start

3、验证是否已经载入KVM模块

$ lsmod | grep kvm

4、使用virt-manager安装guest

virt-manager是一个api gui工具,可以很方便的管理虚拟机。下面简单介绍使用virt-manager安装虚拟机系统。

1)打开virt-manager,Add-connection,hypervisor选择QEMU/KVM,点击connect。
2)在连接localhost(QEMU)右键-NEW,输入guest名称,还有选择安装方式,我这里选择
iso文件安装,点击forword。
3)选择iso文件路径,点击forword。
4)定义分配内存及cpu个数。
5)定义磁盘映像大小。
6)下一步就是常规的系统安装了。

5、使用virt-install安装guest

当你的CentOS没有桌面环境时,可以使用virt-install命令安装,如:

1、输入虚拟机名称
2、分配多少内存
3、定义虚拟机磁盘映像的位置
4、此步可以直接输入iso的位置或是url
5、进行系统常规安

 

BLAST+中makeblastdb参数详解

一般我们是有一个fasta文件用来格式化数据库,以前的命令是formatdb,现在是makeblastdb

一般用到的格式如下:

makeblastdb -in input_file -dbtype molecule_type -title database_title -parse_seqids -out database_name -logfile File_Name

注意:BLAST+2.2.24中这个参数不要加 -parse_seqids,不然成死循环

-in 后接输入文件,你要格式化的fasta序列
-dbtype 后接序列类型,nucl为核酸,prot为蛋白
-title 给数据库起个名,好看~~(不能用在后面搜索时-db的参数)
-parse_seqids 推荐加上,现在有啥原因还没搞清楚
-out 后接数据库名,自己起一个有意义的名字,以后blast+搜索时要用到的-db的参数
-logfile 日志文件,如果没有默认输出到屏幕

MegaBlast/Discontiguous MegaBlast/BlastN, Blastp/PSI-Blast/PHI-BLAST的区别与选择

从blastn页面上的简单帮助可以看到Highly similar sequences (megablast)多用于比较相似性比较高(相似性在95%以上)的序列,速度快;More dissimilar sequences (discontiguous megablast)用于相似性稍低于megablast的比对,但是灵敏度和精确度更高,多用于不同物种间的同源比对;而Somewhat similar sequences (blastn)用于比对相似性较差的序列,可以比对最短7个碱基的长度,所以比对精确度最高,比对结果最多,速度最慢。

所以,在选择的时候根据你提交的序列和搜索的目的进行选择,如果是想看这段序列在数据库当中是否有收录,可以用megablast,如果想用其他物 种的基因注释信息来注释一个未注释物种的序列,可以选择discontiguous megablast,如果想得到更多更全面的结果,可以选择blastn。

说完blastn,接着说blastp~blsatp中也有三个不同的算法可以选择,如下:

blastp (protein-protein BLAST)就是简单地进行蛋白与蛋白的比对,寻找蛋白质相
似序列;

PSI-BLAST (Position-Specific Iterated BLAST)叫做位点特异性迭代比对,它
在蛋白质数据库中循环搜索查询蛋白质,所有前一次被psi-blast发现的统计显著蛋白质序
列将整合成新记分矩 阵,通过多次迭代比对,直到不再发现统计显著的新蛋白质;

PHI-BLAST (Pattern Hit Initiated BLAST)可以在搜索的时候限定蛋白质的模式
(pattern),只给出包含此模式的比对结果。

Blastp/PSI-Blast/PHI-BLAST都是蛋白序列与蛋白序列之间的Blast比对

1. Blastp: 标准的蛋白序列与蛋白序列之间的比对 Standard protein BLAST is designed for protein searches. Blastp用于确定查询的氨基酸序列在蛋白数据库中找到相似的序列。跟其它的Blast程序一样,目的是要找到相似的区域。

2. PSI-BLAST : 敏感度更高的蛋白序列与蛋白序列之间的比对 PSI-BLAST is designed for more sensitive protein-protein similarity searches. Position-Specific Iterated (PSI)-BLAST,是一种更加高灵敏的Blastp程序,对于发现远亲物种的相似蛋白或某个蛋白家族的新成员非常有效。当你使用标准的Blastp 比对失败时,或比对的结果仅仅是一些假基因或推测的基因序列时(”hypothetical protein” or “similar to…”),你可以选择PSI-BLAST重新试试。

3. PHI-BLAST : 模式发现迭代BLAST PHI-BLAST can do a restricted protein pattern search. PHI-BLAST, 模式发现迭代BLAST, 用蛋白查询来搜索蛋白数据库的一个程序。仅仅找出那些查询序列中含有的特殊模式的对齐。

PHI的语法详细介绍看这里:http://www.ncbi.nlm.nih.gov/blast/html/PHIsyntax.html

BLAST本地化web运用

1 首先,到ftp://ftp.ncbi.nih.gov/blast/executables/release/LATEST/下载最新的版本的wwwblast(写此文时对应的文件为wwwblast-2.2.26-x64-linux.tar.gz)。

2 然后将该文件解压,不需要configure即可使用。设定所解压的文件夹到Apache路径。

将如下几行加入/etc/httpd/conf/httpd.conf中:

Alias /blast "/home/chenlianfu/programs/wwwblast"
<Directory "/home/chenlianfu/programs/wwwblast">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

3 wwwblast默认提供了2个test的数据库,分别为test_na_db和test_aa_db。

4 使用正常版的 makeblastdb 来创建数据库,并将数据库文件放入文件夹的db/路径下。

5. 修改 blast.html 文件。

<select name = "DATALIB">
    <option VALUE = “nt"> nt #nt是db/中所含有的数据库名。
</select>

6. 修改 blast.rc 配置文件。

NumCpuToUse     6	#CPU的使用个数,线程数。

blastn nt	#blastn程序所能使用的数据库名称。
tblastn nt	#下同...
tblastx nt 
blastp 
blastx

5 这样,在网页中就能正常使用nt数据库了。

UniProtKB

1. UniProtKB是什么?
UnProtKB,即UniProt Knowledgebase,主要包括两个部分:UniProtKB/Swiss-Prot和UniProtKB/TrEMBL。其中UniProtKB/Swiss-Prot是手工注释和修正的蛋白质数据库,来源于实验结果,计算和科学结论。后来由于精确的Swiss-Prot数据库无法很快得以扩大从而包含所有的蛋白质序列,于是加入了UniProtKB/TrEMBL这一部分,该数据库蛋白质主要经过计算来进行自动注释,分类。
2. UniProtKB下载
UniProt数据库每4周更新一次,下载地址如下:

ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
ftp://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_trembl.fasta.gz
uniprot_sprot.fasta.gz 56M
uniprot_trembl.fasta.gz 5.3G

Configuring_@INC_of_perl

Perl uses by default the array @INC as include path when searching for modules to load. This path is compiled into the perl binary when building it from source and can be printed by running perl -V, which will show something like:

$ perl -V
...
Compiled at Jun 22 2012 13:27:28
@INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

1. Using the module lib

The standard module lib can be used to specify an explicit path to include. It must be stated at the top of the script:

#!/usr/bin/perl
#
use lib "/opt/special/plib";
use strict;
use warnings;
..

2. Using the switch ­I at the command line

The switch ­I can be used to specify additional library locations when invoking the interpreter.

perl -I /opt/special/plib script.pl

3. Using the switch ­I in the first line of the script

The same ­I switch can be added to the interpreter specification.

#!/usr/bin/perl -I /opt/special/plib
#
use strict;
use warnings;
..

4. Manipulating @INC directly

The array @INC can be manipulated directly using array operations

#!/usr/bin/perl
#
BEGIN {
unshift(@INC, "/opt/special/plib");
}
use strict;
use warnings;

This is the same as using the module lib, which in fact does something like this.

5. Using the environment variable PERL5LIB

The environment variable PERL5LIB can be used to specify additional include directories when running a perl script.

> export PERL5LIB=/opt/special/plib  #Adding this sequnce to 
/etc/profile, then the @INC would be changed persistently.
> /path/to/script.pl

6. Changing @INC at compile time

CentOs配置OpenSSH无密码登陆

1 配置服务器/etc/ssh/sshd_config文件。

去掉以下内容的注释符“#”或修改成如下方式。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PermitRootLogin no    #不允许root用户登陆ssh,目的是为了系统安全。
Protocol 2    #选择第二种协议,目的是为了系统的安全。

2 在客户端生成一对公私钥,将公钥复制到服务器的user/.ssh/authorized_keys文件中。

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ scp ~/.ssh/id_dsa.pub user@Sever's_IP:/home/user/.ssh/
$ ssh user@Sever's_IP
$ cat /home/user/.ssh/id_dsa.pub >> /home/user/.ssh/authorized_keys

3 修改远程服务器/home/user/.ssh/authorized_keys的权限为600,即可通过OpenSSH远程无密码登陆服务器。

$ chmod 600 ~/.ssh/authorized_keys

4.添加id_rsa到ssh-agent。如果连接服务器返回“Agent admitted failure to sign using the key”。

$ ssh-add
再次连线就正常了。

5. 设置 selinux

若没有关闭 selinux,则依然不能无密码登录,关闭即可。

$ sudo setenforce 0

此外,若用户的家目录权限过大,比如为777,则也会导致即使正确进行以上设置后,任然需要输入密码登录。