diff --git a/app/models/key.rb b/app/models/key.rb
index cb8f10f6d5519b5322c6857b63fbb565ed768d71..49bc26122fa1fe4aeb7aa9ddb979e137ddeeb079 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -16,8 +16,6 @@ class Key < ActiveRecord::Base
     presence: true,
     length: { maximum: 5000 },
     format: { with: /\A(ssh|ecdsa)-.*\Z/ }
-  validates :key,
-    format: { without: /\n|\r/, message: 'should be a single line' }
   validates :fingerprint,
     uniqueness: true,
     presence: { message: 'cannot be generated' }
@@ -31,6 +29,7 @@ class Key < ActiveRecord::Base
   after_destroy :post_destroy_hook
 
   def key=(value)
+    value&.delete!("\n\r")
     value.strip! unless value.blank?
     write_attribute(:key, value)
   end
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index d41717d022334e4e9a665462ba16f1316321327d..251d0cfd08c058624bb36d84970202b5d9612972 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -94,15 +94,17 @@ describe Key do
       expect(key).not_to be_valid
     end
 
-    it 'rejects the unfingerprintable key (not a key)' do
-      expect(build(:key, key: 'ssh-rsa an-invalid-key==')).not_to be_valid
+    it 'accepts a key with newline charecters after stripping them' do
+      key = build(:key)
+      key.key = key.key.insert(100, "\n")
+      key.key = key.key.insert(40, "\r\n")
+      expect(key).to be_valid
     end
 
-    it 'rejects the multiple line key' do
-      key = build(:key)
-      key.key.tr!(' ', "\n")
-      expect(key).not_to be_valid
+    it 'rejects the unfingerprintable key (not a key)' do
+      expect(build(:key, key: 'ssh-rsa an-invalid-key==')).not_to be_valid
     end
+    
   end
 
   context 'callbacks' do