ML
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Managing SSH Keys

    IT Discussion
    4
    39
    5.6k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Alex Sage
      last edited by Alex Sage

      I use Windows, Linux and Mac computers.

      What's the best way to store, transport and secure my SSH private keys? Encrypted Flash Drive?

      1 Reply Last reply Reply Quote 1
      • scottalanmillerS
        scottalanmiller
        last edited by

        Well my answer to this would be.... why have only one key? It is vastly more secure to have one key per device so that if a device is compromised you can quickly cut off only that one device and you can track usage of the key.

        A 1 Reply Last reply Reply Quote 2
        • A
          Alex Sage @scottalanmiller
          last edited by

          @scottalanmiller I have one key per device, and one key for me to access my jump box 🙂

          scottalanmillerS 1 Reply Last reply Reply Quote 0
          • scottalanmillerS
            scottalanmiller @Alex Sage
            last edited by

            @anonymous said:

            @scottalanmiller I have one key per device, and one key for me to access my jump box 🙂

            It's one or the other. One key per device that accesses your jump box. That's the standard way. You don't want to have your private key on multiple devices for security reasons. There are times when conveniences and portability trump security, but even standard level security practices have keys as non-portable and one unique key per device.

            1 Reply Last reply Reply Quote 1
            • A
              Alex Sage
              last edited by

              @scottalanmiller Did you ever do your Jump Box write up? Maybe I am missing something... For now I have been using Strong passwords.

              1 Reply Last reply Reply Quote 2
              • A
                Alex Sage
                last edited by

                Found it: http://mangolassi.it/topic/6143/linux-lab-project-building-a-linux-jump-box

                I think I am not understanding how I distribute the keys correctly for server to server. Can you explain?

                scottalanmillerS 1 Reply Last reply Reply Quote 0
                • scottalanmillerS
                  scottalanmiller @Alex Sage
                  last edited by

                  @anonymous said:

                  Found it: http://mangolassi.it/topic/6143/linux-lab-project-building-a-linux-jump-box

                  I think I am not understanding how I distribute the keys correctly for server to server. Can you explain?

                  There are two sets of keys involved here, one set are the keys to access the jump box, the other set (of just one key pair) is the pair for connecting from the jump box to the other machines. There should ideally only every be one use of any private key but unlimited uses of the public members. So....

                  On the jump box itself you create only one key pair and you distribute the public key to any and every machine to which you want access. Public keys are literally fine to make public. In companies where I have worked we published these to public wikis to make it easy for people to grab them. There is no security concern with exposing the public key, so distribute it liberally.

                  For machines accessing the jump box there should be a key pair made and the public key copied to the jump box. So if you access the jump box from ten different machines, there should be ten key pairs. The key pair doesn't just identify the user but the user/machine combination. That's part of the security mechanism.

                  1 Reply Last reply Reply Quote 0
                  • scottalanmillerS
                    scottalanmiller
                    last edited by

                    So if you are doing a strong password or 2FA to the Jump box and then the Jump box connects to 100 servers, you would create a total of one key pairs.

                    If you have 100 machines connecting to the jump box and the jump box connecting to 100 servers, you would have a total of 101 key pairs.

                    1 Reply Last reply Reply Quote 0
                    • scottalanmillerS
                      scottalanmiller
                      last edited by

                      Here is a simple way to think of it...

                      If the simple thing is to just copy the public key, that's what you should do. Public keys are meant to be copied.

                      Private keys should not be copied. If you want to copy a private key you should stop and consider if you really want to bypass the security of the user/machine pair. Some people do, but this is not using SSH to its secure potential.

                      1 Reply Last reply Reply Quote 0
                      • A
                        Alex Sage
                        last edited by

                        I think I would get this easier with a simple example for 2 servers.

                        So lets say I have a jumpbox, and I want to "add" a server to it. I create a key pair on the jumpbox, then copy the public key to the server I am adding?

                        scottalanmillerS 1 Reply Last reply Reply Quote 0
                        • A
                          Alex Sage
                          last edited by

                          After that I can just type ssh <hostname> and jump right over the to the other box?

                          scottalanmillerS 1 Reply Last reply Reply Quote 0
                          • scottalanmillerS
                            scottalanmiller @Alex Sage
                            last edited by

                            @anonymous said:

                            I think I would get this easier with a simple example for 2 servers.

                            So lets say I have a jumpbox, and I want to "add" a server to it. I create a key pair on the jumpbox, then copy the public key to the server I am adding?

                            Think of it this way.... you create one key pair for each user on the jump box and no more on the jump box. You would make them when you create the users, not when you add a server. Adding a server would not involve creating a key pair, only deploying the already existing public key(s).

                            1 Reply Last reply Reply Quote 0
                            • scottalanmillerS
                              scottalanmiller @Alex Sage
                              last edited by

                              @anonymous said:

                              After that I can just type ssh <hostname> and jump right over the to the other box?

                              Correct

                              1 Reply Last reply Reply Quote 0
                              • A
                                Alex Sage
                                last edited by

                                So every box gets the same public key?

                                1 Reply Last reply Reply Quote 0
                                • A
                                  Alex Sage
                                  last edited by

                                  God I feel thick right now, Thanks for your help @scottalanmiller

                                  1 Reply Last reply Reply Quote 1
                                  • scottalanmillerS
                                    scottalanmiller
                                    last edited by

                                    Real world example of how NTG does this which I hope illustrates how to do this effectively for a "Key Managed Environment."

                                    We have a "user deployment script" that we run on new CentOS boxes. The script has a list of users and their user IDs from the jump box (this does not have to be done but it makes user management so much better) and the script creates all of the users, creates their home directories, sets directory permissions, sets up default groups and finally copies the users' public keys into their .ssh directories. The public keys are hard coded into the script, it just "echos" them out to the file. That's all. Super simple and no matter how many servers we deploy, just one script with all of the public keys already in it. They don't change.

                                    A stacksofplatesS 2 Replies Last reply Reply Quote 1
                                    • A
                                      Alex Sage @scottalanmiller
                                      last edited by

                                      I got it now. So it really is one key per user.

                                      scottalanmillerS 1 Reply Last reply Reply Quote 0
                                      • scottalanmillerS
                                        scottalanmiller @Alex Sage
                                        last edited by

                                        @anonymous said:

                                        I got it now. So it really is one key per user.

                                        Oh yes. One key per user per source server. Not just for Jump boxes, this is "general SSH Key security theory.* There are cases where you might forego this like if you have a Jump server cluster. Each node in the cluster might share the same private key through a shared storage mechanism internally - that would be a good exception.

                                        But by and large, every user makes their own key on every machine from which they will log into another machine using SSH keys.

                                        1 Reply Last reply Reply Quote 0
                                        • scottalanmillerS
                                          scottalanmiller
                                          last edited by

                                          You do not make a root key, except in extreme cases you want to avoid that. No one should ever log in as root except for emergencies. You want keyed access by user with sudo to root because then the OS can track the actual user end to end. You have confirmation of the source machine, the user and everything that they do after that point of contact.

                                          A 1 Reply Last reply Reply Quote 0
                                          • scottalanmillerS
                                            scottalanmiller
                                            last edited by

                                            For those with static IPs or static ranges.... you can lock SSH Keys per key to IP addresses, host addresses, etc. This is not a firewall step but an SSH Application Layer security mechanism akin to how Asterisk will let you lock an extension to a specific IP address or range. This will take your security to a whole new level if you are able to do it. Many people cannot. Often you can do it with some keys and not others.

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post