设置不输入密码ssh登录

简介: 在/etc/hosts文件下加入:   192.168.1.60 u60 #设置u60为主机名 在每个节点上创建RSA秘钥: # ssh-keygen -t rsa # 一直按确定键即可 # touch /root/.

在/etc/hosts文件下加入:

  192.168.1.60 u60 #设置u60为主机名

在每个节点上创建RSA秘钥:

# ssh-keygen -t rsa # 一直按确定键即可

# touch /root/.ssh/authorized_keys

先配置u60,这样u60就可以无密码访问u62和u63了:

u60# scp /root/.ssh/id_rsa.pub u62:/root/.ssh/id_rsa.pub_u60

u60# ssh u62 "cat /root/.ssh/id_rsa.pub_u60>> /root/.ssh/authorized_keys"

 面试题

 1) void GetMemory(char **p, int num)
   {
   *p = (char *)malloc(num);
  }
  void Test(void)
   {
   char *str = NULL;
   GetMemory(&str, 100);
   strcpy(str, "hello");
   printf(str);
  }
  请问运行Test 函数会有什么样的结果, 有没有问题?

2) void Test(void)
   {
      char *str = (char *) malloc(100);
      strcpy(str, “hello”);
      free(str);
      if(str != NULL)
       {
    strcpy(str, “world”);
    printf(str);
     }
  }
  请问运行Test 函数会有什么样的结果,有没有问题 ?
  
3)  char *GetMemory(void)
    {
   char p[] = "hello world";
   return p;
  }
  void Test(void)
   {
    char *str = NULL;
    str = GetMemory();
    printf(str);
  }

    请问运行Test 函数会有什么样的结果,有没有问题 ?

4)  双向链表的头指针为pStart, 尾指针为pEnd, 其中一个元素的指针为p, 将p删除,放到最后。
6) 编写strcat函数
  已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);
  其中strDest 是目的字符串,strSrc 是源字符串。
7) 写一个单件CSingleton;
8) 给定两个字符串 s1 和s2, 要求判定s2是否能够通过s1做循环移位得到字符串包含。例如,给定s1 = aabcd和s2= cdaa,返回true,如果s1 == abcd 和s2 = acbd, 返回false.
 

NO1

void GetMemory(char *p)

{

       p=(char *)malloc(100);

}

void Test()

{

  char * str=NULL;

  GetMemory(str);

  strcpy(str,"Hello world");

  printf(str);

}

 

实质:GetMemory(str)在调用时会生成一个_str与str指向同一个数,这是因为C语言中函数传递形参不改变实参的内容,但是指针指向的内容是相同的,因此可以用指针控制数据。题中的GetMemory(str),实质是对_str的操作,并没有对str操作,函数结束后_str撤销,因此不会产生新的内存空间,str仍然是一个空指针。

 

NO2

char *GetMemory()

{

       char p[]="Hello World";

       return p;

}

void Test()

{

       char * str=NULL;

       str=GetMemory();

       printf(str);

}

实质:当一个函数调用结束后会释放内存空间,释放它所有变量所占用的空间,所以数组空间被释放掉了,也就是说str所指向的内容不确定是什么东西。但是返回的指针指向的地址是一定的。

 

NO3

char *GetMemory()

{

       Return “hello world”;

}

void Test()

{

       char * str=NULL;

       str=GetMemory();

       printf(str);

}

实质:本例打印hello world,因为返回常量区,而且并没有修改过。在上一个例子中不一定能打印hello world,因为指向的是栈区。

 

NO4

void GetMemory(char **p,int num)

{

       *p=(char *)malloc(num);

}

void Test()

{

       char * str=NULL;

       GetMemory(&str,100);

       strcpy(str,"Hello");

       printf(str);

}

可以正确的打印Hello但是内存泄露了,在GetMemory()中使用了malloc申请内存,但是在最后却没有对申请的内存做任何处理,因此可能导致内存的泄露,非常危险。

 

NO5

void Test()

{

       char *str=(char *)malloc(100);

       strcpy(str,"Hello");

       free(str);

       if (str!=NULL)

       {

              strcpy(str,"World");

              printf(str);

       }

}

申请空间,拷贝字符串,释放空间,前三步操作都没有问题,到了if语句里的判断条件开始出错了。因为一个指针被释放了之后其内容并不是NULL,而是一个不确定的值,所以if语句永远不能被执行,这也是著名的“野”指针问题。

 

NO6

void GetMemory(void)

{

       char *str=(char *)malloc(100);

       strcpy(str,"hello");

       free(str);

       if (str !=NULL)

       {

              strcpy(str,"world");

              printf(str);

       }

}

Str 为野指针,打印的结果不能确定。

 

 
 
相关文章
|
29天前
|
JavaScript 应用服务中间件 Linux
【应用服务 App Service】解决无法从Azure门户SSH登录问题
【应用服务 App Service】解决无法从Azure门户SSH登录问题
|
29天前
|
机器学习/深度学习 存储 Linux
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
【机器学习 Azure Machine Learning】使用VS Code登录到Linux VM上 (Remote-SSH), 及可直接通过VS Code编辑VM中的文件
|
28天前
|
安全 Shell Linux
如何禁止某个用户使用ssh登录
本文介绍了五种禁止用户通过SSH登录的方法:1) 修改`/etc/ssh/sshd_config`文件中的`DenyUsers`和`DenyGroups`来阻止特定用户或用户组登录;2) 将用户的默认shell设置为`/usr/sbin/nologin`或`/bin/false`以禁用其SSH访问;3) 利用PAM(可插入认证模块)通过编辑`/etc/security/sshd.conf`来限制登录权限;4) 通过编辑`/etc/hosts.deny`文件拒绝特定用户的SSH访问;5) 锁定或禁用用户账号以阻止所有类型的登录。每种方法都提供了详细的步骤指导。
61 1
|
23天前
|
网络安全 数据安全/隐私保护
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
VSC通过 SSH 连接到远程服务器时,每次都需要输入密码
114 0
|
1月前
|
安全 Linux Shell
Linux系统之间实现免密码登录(SSH无密码登录
【8月更文挑战第21天】要在Linux系统间实现SSH免密码登录,需先在源机器生成SSH密钥对,然后将公钥复制到目标机器的`.ssh/authorized_keys`文件中。可通过`ssh-keygen`命令生成密钥,并使用`ssh-copy-id`命令传输公钥。最后测试SSH连接,确保能无密码登录。若目标机器缺少相关目录或文件,需手动创建并设置适当权限。完成这些步骤后,即可实现安全便捷的免密码登录。
47 0
|
1月前
|
Ubuntu Linux 网络安全
在Linux中,如何禁用root用户直接SSH登录?
在Linux中,如何禁用root用户直接SSH登录?
|
1月前
|
存储 安全 Linux
说到Linux安全,SSH限制IP登录绕不开这3种方法!
说到Linux安全,SSH限制IP登录绕不开这3种方法!
|
分布式计算 Hadoop 网络安全
|
安全 Shell Linux
为什么不能在SSH(Secure Shell)登录中设置ulimit值?
关闭这些选项会带来一些安全风险。但那也只是在SSH守护进程的漏洞被发现并且被利用的情况下才会出现。关闭之后就意味着sshd不会创建非特权子进程去处理进站连接。如果漏洞存在而且被利用,则有人可以控制sshd进程,而这个进程是以root身份运行的。
1774 0
|
网络安全 数据安全/隐私保护
SSH免登录设置
基础篇 执行: ssh-keygen -t rsa rocky@tiger:~$ ssh-keygen -t rsa Generating public/private rsa key pair.
686 0